2012-03-15 27 views
0

我正在着手編寫一個代碼來處理套接字編程中的多個客戶端,但是我對即使算法也沒有想法。我不知道如何繼續。任何人都可以幫助我的算法? 在此先感謝在socket編程中處理多個客戶端的算法是什麼?

+3

「算法」可能是「多線程」... – 2012-03-15 13:36:01

+0

unix或windows? – 2012-03-15 13:36:22

+0

多線程(pthreads)或多進程(fork)。 – twain249 2012-03-15 13:39:43

回答

0

我會下載Apache代碼 - 它實現了這一點,似乎是一個合理的算法。

0

我認爲這將是一件好事,通過一個多線程服務器,每個線程監聽單個端口或多個端口。

雖然有可能創建一個多進程服務器我仍然推薦使用多線程服務器。原因是在here

+0

首先,無論如何,有一個實際上是_listening_的端口(調用'accept()'的端口)。其次,推薦一個多線程的多進程類似於推薦一個叉子在勺子上,而不是問盤子上有什麼。 – bereal 2012-03-15 16:13:26

0

我想也許你應該嘗試使用事件驅動模型(如select())或多線程模型。這取決於你打算做什麼。

-1

我用Java寫了一次簡單的聊天。你可以看看這裏的源: github.com/Samuirai/Java

的基本設計如下:

ServerSocket serverSocket = new ServerSocket(4444); 
System.out.println("Server started"); 
while (true) { 
    Socket client = serverSocket.accept(); 
    System.out.println("Client connected"); 
    ClientConnection conn = new ClientConnection(client, this); 
    this.connections.add(conn); 
    new Thread(conn).start(); 
} 

服務器等待客戶端連接。當客戶端連接,它增加了一個新的連接列表並啓動線程其處理與客戶的連接。該項目有三個重要的文件,你應該檢查:ChatServer,ChatClientClientConnection。 我希望代碼很容易理解。