2013-03-08 122 views
1

我正在開發一個項目,其中有一個客戶端需要向多個服務器(100)打開Telnet會話並等待消息。信息很小(< 80字節),並會隨機發生。單個客戶端與多個服務器通話

我讀過這是一種糟糕的形式,通過爲每個「服務器」創建一個線程來做到這一點。我正在尋找關於使用TCPClient或Winsock或Catalyst處理多個站點的最佳方法的建議?

感謝您的幫助!

Gary M

回答

1

因爲它是Windows平臺,所以有很多選擇。您可以使用Winsock select函數或WSAPollWSAAsyncSelect或完成端口。

select/WSAPoll工作幾乎像在Posix中一樣,並且有很多示例,以及一些關於如何使用這些庫的準備好的庫。

WSAAsyncSelect將發送事件到UI線程(你需要有窗口)。如果你的應用程序有一個窗口,這可能是最簡單的選擇,因爲所有的活動都將發生在窗口線程中,並且庫負責事件序列化。

而且看看(這是重要的,因爲你有更多然後64個連接): http://msdn.microsoft.com/en-us/library/windows/desktop/ms739169(v=vs.85).aspx

使用Windows completition端口: http://msdn.microsoft.com/en-us/magazine/cc302334.aspx http://msdn.microsoft.com/en-us/magazine/ms810436.aspx

+0

謝謝你這麼多,這些建議!我會通過他們,並找出什麼似乎最適合這個應用程序! – user2146614 2013-04-07 12:52:22