Метод read у InputStream читает всего один байт, а не четыре байта.
Можно было бы прочесть int при помощи обертки типа DataInputStream, но она располагает байты в другом порядке:
Для корректного взаимодействия двух систем необходимо, чтобы байты числа читались так же, как пишутся. Иначе читающая сторона будет получать неверные числа.