[英]Client Socket on Java
在大多数Java客户端/服务器示例中,它们使用ServerSocket.accept()方法接收来自客户端的消息。 此方法阻塞线程。 这看起来不错,因为服务器不会做无用的工作并且可以立即答复。 但是在客户端,他们使用无限循环,如下所示:
BufferedReader in = new BufferedReader (new InputStreamReader (socket.getInputStream ()));
while (true)
{
String cominginText = "";
try
{
cominginText = in.readLine ();
System.out.println (cominginText);
}
catch (IOException e)
{
//error ("System: " + "Connection to server lost!");
System.exit (1);
break;
}
}
这看起来很糟糕,因为在我看来客户没有做任何工作。 是否有某种方法可以在客户端接收消息而无需做无用的工作,而立即像在服务器端一样(可能应该使用侦听器?)
“您所说的无用工作是什么意思?– Braj 31分钟前”
例如检查循环是否按下按钮(我们应该使用监听器)
while (!button.isPressed() ) { }
是不好的方法。
in.readLine()
块。 直到字符串返回,循环才会继续
由于套接字处于阻塞模式,因此这里没有“无用的工作”,但是有:
因此,这绝对是错误的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.