Вот тут неправильно.
```InputStream.read()``` читает один байт. Вам нужно прочесть ```int```. Воспользуйтесь ```DataInputStream```'ом и его ```readInt()```:
http://docs.oracle.com/javase/7/docs/api/java/io/DataInputStream.html#readInt()