gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 11:52:42 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





BufferedReader readLine method hangs and block program

(3 个回答)


8 个月前关闭。




我试图用 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 从我的服务器读取输入?

最佳答案

正如@James 评论所述,您似乎正在等待服务器未发送的回车或换行(完整行)。
这导致您的代码永远等待直到 \n , \r \r\n 收到。

readLine()

Reads a line of text. A line is considered to be terminated by anyone of a line feed ('\n'), a carriage return ('\r'), or a carriagereturn followed immediately by a linefeed.


所以你的 in.readline()从不认为线路被终止,并保持 hopefully等待它结束。为了避免这种情况,而不是发送:
   client.send("Hello from server")
发送
   client.send("Hello from server\n")
或者更好的是,检查该 Python 库是否具有类似于 sendLine() 的内容。方法。

为了循环接收服务器的消息,可以这样做:
while (socket.isConnected()) 
{
String inputLine;
while ((inputLine = in.readLine()) != null)
System.out.println(inputLine);
}

关于java - 从套接字python服务器接收消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65384842/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com