我正在開發一個項目,其中有一個客戶端需要向多個服務器(100)打開Telnet會話並等待消息。信息很小(< 80字節),並會隨機發生。單個客戶端與多個服務器通話
我讀過這是一種糟糕的形式,通過爲每個「服務器」創建一個線程來做到這一點。我正在尋找關於使用TCPClient或Winsock或Catalyst處理多個站點的最佳方法的建議?
感謝您的幫助!
Gary M
我正在開發一個項目,其中有一個客戶端需要向多個服務器(100)打開Telnet會話並等待消息。信息很小(< 80字節),並會隨機發生。單個客戶端與多個服務器通話
我讀過這是一種糟糕的形式,通過爲每個「服務器」創建一個線程來做到這一點。我正在尋找關於使用TCPClient或Winsock或Catalyst處理多個站點的最佳方法的建議?
感謝您的幫助!
Gary M
因爲它是Windows平臺,所以有很多選擇。您可以使用Winsock select函數或WSAPoll或WSAAsyncSelect或完成端口。
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
謝謝你這麼多,這些建議!我會通過他們,並找出什麼似乎最適合這個應用程序! – user2146614 2013-04-07 12:52:22