2010-01-13 28 views
0

我需要一些幫助socket.listen。C#Socket.Listen(MAX_CONNECTIONS);

我的max_connections設置爲1,但即使如果其他客戶端試圖連接,在客戶端它說,它已經連接雖然服務器不會報告任何新的客戶端連接。

我的應用程序介於一個服務器和一個客戶端之間。如果任何其他客戶端嘗試連接,而已經有連接,我希望連接被拒絕。

請幫助一些想法。

非常感謝。

+0

這可能是客戶端錯誤?也許客戶報告說,它不是在連接? – Mark 2010-01-13 22:14:38

回答

5

您沒有提供任何代碼,但您的文章引用Socket.Listen的稱號。賦予Socket.Listen的參數不是最大連接數,而是傳入連接的「積壓」大小。

這意味着當有人試圖連接,但你的服務器還沒有Accept()編輯連接,那些客戶端在「積壓」隊列中。您已將尺寸設置爲1,因此一次只能有一個客戶端正在等待連接。

此參數對允許您的應用程序的連接總數沒有影響。

+0

好的。這就說得通了。我認爲我對Listen有錯誤的想法。 一旦我建立了連接,我可以關閉監聽插口,並且應該照顧它,我認爲.. – iTEgg 2010-01-13 22:26:50

0

您可以使用TCPClient上的IsConnected屬性來檢查連接是否已經存在並作出決定。

0

我建議你接受新的客戶端連接,但立即訪問包裹服務器之前獲得semaphor和訪問之後,立即將其釋放。這種方法允許您控制有多少客戶端同時使用包裝服務器。

相關問題