Я новичок в JAVA Sockets, я просто хочу создать приложение, которое получает строковое значение. Я думаю, сервер работает нормально. Он отправляет данные 5 раз отдельно и останавливается. Но клиент получает сообщения сервера не отдельно, а тем более, когда сервер останавливает клиента DONT, клиент не останавливается и все еще принимает сообщения (NULL)
SERVER
static BufferedReader in;
static BufferedWriter out;
static Socket clientSocket;
public static void main(String[] args) {
try {
clientSocket = new Socket("192.168.0.106", 13130);
in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
out = new BufferedWriter(new OutputStreamWriter(clientSocket.getOutputStream()));
int i = 0;
while (!clientSocket.isClosed()) {
System.out.println("Times: " + i++);
String cmd = in.readLine();
System.out.println(cmd);
}
clientSocket.close();
}catch (Exception e){
e.printStackTrace();
}
И сервер
void Write() throws Exception{
ServerSocket serverSocket;
serverSocket = new ServerSocket(13130);
Socket clientSocket;
System.out.println("Listening...");
clientSocket = serverSocket.accept();
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
// и отправлять
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(clientSocket.getOutputStream()));
Thread.sleep(10000);
for (int i = 0; i < 5; i++) {
System.out.println("Times: " + i);
out.write("Hello " + i);
out.flush();
}
clientSocket.close();
serverSocket.close();
}
Итак, я ожидал, что клиент прочитает данные 5 раз и остановится. Но я получил следующий вывод:
Times: 0
Hello 0Hello 1Hello 2Hello 3Hello 4
Times: 1
null
Times: 2
null
Times: 3
null
Times: 4
null
Times: 5
null
Times: 6
null
AND SO ON...
Может быть, проблема: сервер отправляет сообщения слишком быстро?