从套接字python服务器接收消息

时间:2020-12-20 21:13:35

标签: java python sockets input

我尝试使用 bufferreader 读取套接字上的消息

我的客户:

Socket socket = new Socket("10.0.0.4", 12345);

BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

System.out.println(in.readLine());

我的python服务器:

(client, (address, _)) = server.accept()  # Accept to new clients (Accept to new command from the phone)
client.send("Hello from server")

但是当我从服务器向客户端发送消息时,代码在最后一行 System.out.println(in.readLine()); 中得到堆栈,就像他在等待什么一样。

当我关闭服务器时,出现错误。

如何使用 Java 从我的服务器读取输入?

1 个答案:

答案 0 :(得分:2)

正如@James 评论所述,您似乎正在等待服务器未发送的回车或换行(完整行)。

这会导致您的代码永远等待直到 original_img = Image.open("someimage.png") resized_img = original_img.resize((10, 10), Image.ANTIALIAS) photo_img = ImageTk.PhotoImage(resized_img) \n\r已收到。

<块引用>

readLine()

读取一行文本。一行被任何人认为是终止 换行符 ('\n')、回车符 ('\r') 或回车符之一 返回后立即换行。

因此,您的 \r\n 永远不会认为线路已终止,而是让 hopefully 等待它结束。为了避免这种情况,而不是发送:

in.readline()

发送

   client.send("Hello from server")

或者更好的是,检查该 Python 库是否具有类似于 client.send("Hello from server\n") 方法的内容。


为了循环接收服务器的消息,可以这样做:

sendLine()