这个问题在这里已经有答案了:
bufferedreader readline方法挂起并阻止程序(3个答案)
19天前关门了。
我试图用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条答案
按热度按时间mwecs4sa1#
正如@james comment所说,您似乎在等待服务器没有发送的回车符或换行符(整行)。
这会导致您的代码永远等待
\n
,\r
或者\r\n
收到。readLine()
读一行文字。行被认为是由换行符('\n')、回车符('\r')或紧跟换行符的回车符之一终止的。所以你的
in.readline()
从不考虑线路的终止,而是满怀希望地等待它的结束。为了避免这种情况,请不要发送:发送
或者更好的是,检查python库是否有类似于
sendLine()
方法。为了循环接收服务器的消息,类似这样的操作可能会起作用: