когда Java-клиент может получить -1 с сервера c? - PullRequest
2 голосов
/ 15 октября 2011

Мой клиент написан на Java. Сервер написан на C. Когда клиент читает с сервера, функция чтения возвращает -1. Я знаю в Java, если выходной поток закрыт до закрытия сокета, клиент Java получит -1. но когда в C, когда клиент Java получит -1?

JAVA CASE:
OutputStream out = socket.getOutputStream();
out.write(buf);
out.close();
out.write(otherbuf);

В этом случае, когда клиент вызывает read (), он вернет -1.

Если сервер записан в c, когда java-клиент вернет -1 ?? Спасибо.

1 Ответ

4 голосов
/ 15 октября 2011

На каком языке написан сервер, не имеет значения. Это может быть написано во что угодно, клиент не знает и не должен заботиться (в общем).

A read вернет -1, когда достигнет конца потока, как задокументировано. Конец потока происходит, когда другая сторона закрыла эту сторону сокета (TCP).

(На стороне C, предполагая систему POSIX, сокет может быть закрыт либо системным вызовом close(2), либо системным вызовом shutdown(2). Последний позволяет программе закрывать только одну "сторону" соединение, т.е. закройте сторону записи, но оставьте сторону чтения открытой. close выключает обе стороны.)

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