1
我正試圖保持多線程服務器程序的連接打開狀態。當我點擊一個按鈕時,我希望它向所有連接的客戶端發送測試消息。與套接字保持連接
public void run() {
try {
Scanner in = new Scanner(socket.getInputStream());
PrintWriter out = new PrintWriter(socket.getOutputStream());
readUpdate(out, in);
while(true){sendUpdate(out);}
} catch (Exception e) {
e.printStackTrace();
}
}
使用多CPU的方式。
這是我的sendUpdate方法。
private void sendUpdate(final PrintWriter out) {
new Thread(new Runnable() {
public void run() {
if(Server.send) {
try {
if (Server.command != "idle") {
System.out.println("Sending");
out.println("[email protected]" + Server.command);
out.flush();
Server.send = false;
Thread.sleep(100);
}
} catch (Exception ex) {
}
}
}
}).start();
}
如果有人可以幫助我保持連接打開,並準備發送數據,我將不勝感激。
'而(真){sendUpdate(出);}'創造這麼多線程這個產量:o ..只是不創建'setUpdate()'方法中的新線程。 – 2012-07-08 16:19:38
套接字將保持打開狀態,直到您或客戶端關閉它爲止。將循環移到線程的'run'方法中。 – 2012-07-08 16:46:34
我試過了,我幫了忙,但是我的CPU使用率每個客戶端連接了大約80%,我只能連接四個。 – user1497561 2012-07-08 16:53:54