在大多数Java客户端/服务器检查中,他们使用ServerSocket.accept()方法从客户端接收消息。此方法阻止该线程。这看起来不错,因为服务器不做无用的工作,可以立即回答。但在客户端,他们使用无限循环这样的:Java上的客户端套接字
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()'块在客户端吗? – mellamokb
'ServerSocket.accept()'方法不用于接收来自客户端的消息。它等待有人接受插座。输入/输出流用于消息通信。 – Braj
“无用的工作”是什么意思? – Braj