2012-06-13 131 views
-1

我有一個接受客戶端連接的基於套接字的服務器。問題是服務器只能接受一個客戶端連接。我希望它接受多個客戶端。一個套接字的多個客戶端連接

服務器代碼:

 class Conn extends Thread{ 
     ServerSocket ss; 
     Socket s; 
     public void run() 
     { 
      status.setText(status.getText()+"connecting"); 
      try{ 
      while(true) 
      { 
      ss=new ServerSocket(3000); 
      s=ss.accept(); 
      Read r=new Read(s); 
      r.start(); 
      } 
      }catch(Exception e){} 
     }    
    } 
+0

我想你會與MulticastSockets更好的http:/ /docs.oracle.com/javase/1.4.2/docs/api/java/net/MulticastSocket.html – Th0rndike

+0

儘量縮小問題的範圍 - [我們無法爲您調試代碼庫] (http://meta.stackexchange.com/a/135066/175248)。 – Makoto

回答

0

Conn類,放像:

try { 
    ss = new ServerSocket(3000); 
    while(true) { 
     s = ss.accept(); 
     Read r = new Read(s); 
     r.start(); 
    } 
} catch (Exception e) {} 

打開服務器套接字,並在一個循環中,接受所有傳入連接,並處理它們開始一個新的線。

+0

是不是跟我所做的一樣? – dpanshu

+0

Nop,套接字創建是在循環外部。循環接受所有傳入的連接並處理它們。 –

0

你可以保持連接的客戶端列表中,然後發送進來的字符串到所有這些,而不是隻把它發送給誰寫的郵件客戶端

+0

如何回覆所有客戶?立刻 – dpanshu

+0

您可以使用一個簡單的for循環,並像現在一樣一個一個地發送它們。 –

相關問題