Зачем проходить ObjectOutputStream
? Либо используйте OutputStream
напрямую через метод write
, либо выберите, например, DataOutputStream
, если вы сочтете это необходимым.
Кроме того, вы не должны использовать классы Reader
для передачи двоичных данных. Из API Reader
:
Абстрактный класс для чтения символьных потоков .
Полный пример отправки файла через сокет можно найти здесь:
Передача файла через сокет .
Ключевой код на стороне сервера:
OutputStream os = sock.getOutputStream();
System.out.println("Sending...");
os.write(mybytearray,0,mybytearray.length);
os.flush();
sock.close();
Ключевой код на стороне клиента:
bytesRead = is.read(mybytearray,0,mybytearray.length);