在大多數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