2012-09-02 50 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