Сообщение сокета Java не читается после передачи файла - PullRequest
0 голосов
/ 12 августа 2011

Я отправил файл из одного сокета в другой.После этого я пытаюсь отправить простое сообщение, но это не работает.Может кто-нибудь сказать, почему?

Отправленные файл и сообщение:

byte[] buffer = new byte[16384];
InputStream inputStream = new FileInputStream(f);
OutputStream outputStream = client.getOutputStream();
int len = 0;
while ((len = inputStream.read(buffer)) > 0) {
    outputStream.write(buffer, 0, len);
}
client.shutdownOutput();

//Following doesnt work:
PrintWriter m_out = new PrintWriter(outputStream);
m_out.println("anfrage erhalten");
m_out.flush();

Получение файла и сообщения:

File pdfFile = new File("marke.pdf");
OutputStream fs = new FileOutputStream(pdfFile);

OutputStream os = client.getOutputStream();
InputStream is = client.getInputStream();

byte[] buffer = new byte[16384];
int len = 0;
while ((len = is.read(buffer)) != -1) {
    fs.write(buffer, 0, len);
}   
fs.flush();
fs.close();
client.shutdownOutput();

// Here i will receive the Message after the file transfer, but this doesnt work!
System.out.println(br.readLine());

1 Ответ

2 голосов
/ 12 августа 2011

Вы пишете сообщение для выходного потока после отключения вывода.Вы должны получить IOException, сделав это.

Более того, вы используете тот же поток для записи текстовых данных после записи некоторых двоичных данных.Если вы сделаете это, вы должны найти способ на другой стороне узнать, где заканчиваются двоичные данные и когда начинаются текстовые данные.Если вы будете читать байты до конца потока, как вы это делаете, вы будете читать двоичные данные, объединенные с байтами текстовых данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...