Я изучаю Java, и я столкнулся с некоторыми проблемами с сокетами.Я разработал простое клиент-серверное приложение - своего рода тук-тук, оно выполняет 4 шага:
- клиент отправляет некоторые сообщения на сервер
- сервер получает их и сохраняет в файл
- сервер отправляет обратно клиенту некоторые другие сообщения
- клиент получает их и также сохраняет в файл
Проблема появляется на шаге # 4: клиент не получает сообщения и никогдавыходит из цикла:
while ((inStr = in.readLine()) != null) {
writer.println(inStr);
}
где в это тип BufferedReader
:
try {
socket = new Socket(ipAddress, 4444);
out = new PrintWriter(socket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
На стороне сервера отправляются сообщения:
try {
socket = srvSocket.accept();
out = new PrintWriter(socket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
} catch (IOException e) {
e.printStackTrace();
}
...
out.println("test from server #1");
out.println("test from server #2");
на стороне клиента я смотрел in.ready()
- он возвращает false.На стороне сервера я смотрю out.checkError()
- он возвращает true;
Что я делаю не так - почему поток пуст?
Любая помощь приветствуется!:)