2012-09-02 53 views
2

我剛剛瞭解到您可以使用多線程池進行多客戶端TCP連接,今天我有一個C#應用程序,我喜歡將其實現。我已經閱讀了一些,例如對這個問題的第一個答案(Best way to accept multiple tcp clients?),但我沒有真正瞭解如何使最後的調整與我的「需求」一起工作。我爲每個連接都有一個messagehandeling函數(每個連接都是2個線程,一個用於接收/發送消息(連接在很長的時間內打開),另一個用於根據消息執行任務(還會創建回送)我現在想用recieving方法在下面的鏈接,但我怎麼能在我的例子做一個線程池?線程池多客戶端TCP(消息處理)

如果有不清楚的地方,只是問問題!

/尼克

+1

[如何使用SocketAsyncEventArgs類](http://www.codeproject.com/Articles/22918/How-To-Use-the-SocketAsyncEventArgs-Class) –

+0

謝謝!但我真的不認爲這處理我的例子。我如何根據消息執行「任務」的具體部分(也會創建回送)。例如,我希望在收到特定消息時向其他客戶端發送答覆(新消息),我如何跟蹤套接字/客戶端?例如:客戶端1說:發送這個消息給客戶端2,我怎麼知道哪個客戶端是什麼套接字? – Nick3

+0

我發佈它不按原樣使用。它顯示瞭如何使用異步操作。 –

回答

0

只是爲了避免每個連接有一個線程,它會在操作系統上產生大量的開銷,並且不能很好地擴展。

今天我們使用NIO:非阻塞I/O。一個線程可以處理10k +連接。有很簡單的方法來使用它們,比如NodeJs。 NIO庫可用於大多數平臺/語言(Netty for Java,NodeJs with javascript,...)。

你應該指定你正在使用的極限語言/環境。

+0

好的,使用C#。有任何示例代碼或這樣的? – Nick3

+0

只需搜索它!我用流行的搜索引擎找到了這個。 http://stackoverflow.com/questions/648282/any-nio-frameworks-for-net還搜索關於10k問題的文章 – bokan