我尝试使用 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 从我的服务器读取输入?
答案 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
已收到。
读取一行文本。一行被任何人认为是终止 换行符 ('\n')、回车符 ('\r') 或回车符之一 返回后立即换行。
因此,您的 \r\n
永远不会认为线路已终止,而是让 hopefully 等待它结束。为了避免这种情况,而不是发送:
in.readline()
发送
client.send("Hello from server")
或者更好的是,检查该 Python 库是否具有类似于 client.send("Hello from server\n")
方法的内容。
为了循环接收服务器的消息,可以这样做:
sendLine()