[英]Java: cannot read from socket, thread gets stuck on readLine()
这是我在服务器端的代码:
@Override
public void run(){
String message;
String command;
String[] arguments;
try{
BufferedReader inStream = new BufferedReader(
new InputStreamReader(
clientSocket.getInputStream()));
while(online){
message = inStream.readLine();
if(message == null)
continue;
if(message.charAt(0) == '/'){
int endOfCommandIndex = message.indexOf(' ');
command = message.substring(1, endOfCommandIndex);
arguments = message.substring(endOfCommandIndex + 1).split(" ");
if(command.equals("login")){
setUserName(arguments[0]);
setName(arguments[0]);
sendMessage(this, "Connected");
}
//....
}
}
}
如标题中所述,线程从Socket的InputStream读取时卡住了(我与JDB进行了检查,这不是有条件的等待,因为它似乎仍在“运行”)。
我试图向套接字写一条线,但它根本没有改变其状态。 我正在尝试构建一个类似于聊天的本地应用程序,而对于套接字和流来说我还是很陌生。 提前致谢。
对于客户端:
String msg;
try{
while(!((msg = stdIn.readLine()).equals("/quit")))
toServer.println(msg);
}
catch(IOException e){
e.printStackTrace();
}
如果有人想查看我的整个代码, 则将其托管在github上
看起来该消息在写入套接字流后再也不会刷新。
尝试致电:
toServer.flush();
在println
之后,或者在构造toServer
时启用自动刷新:
toServer = new PrintWriter(socket.getOutputStream(), true);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.