Я пытаюсь заставить сервер (написанный на Python) и клиент (написанный на Java) общаться.Код сервера следующий:
import socket # Import socket module
connection=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
connection.bind(('',12800))
connection.listen(5)
connection_with_client, info_connection = connection.accept()
msg=b""
while(msg!=b"stop"):
print("Entering loop")
msg = connection_with_client.recv(1024)
connection_with_client.send(b"This is a message")
print("Sent")
connection_with_client.close()
connection.close()
Код клиента:
try {
socket = new Socket(InetAddress.getLocalHost(),12800);
PrintWriter out = new PrintWriter(socket.getOutputStream());
out.print("stop");
out.flush();
System.out.println("Sent");
in = new BufferedReader (new InputStreamReader (socket.getInputStream()));
String message_from_server = in.readLine();
System.out.println("Received message : " + message_from_server);
socket.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Странная вещь: когда клиент отправляет сообщение «стоп», все идет нормально, сообщениес сервера получен клиентом.Теперь, когда клиент отправляет другое сообщение, отличное от «stop», сервер сообщает, что отправил сообщение, и во второй раз входит в цикл, однако клиент никогда не получает сообщение и застревает в инструкции in.readLine ().
Я действительно не понимаю, почему первый проход в цикле должен иметь одинаковые эффекты в обеих ситуациях ... Любая помощь приветствуется!