我有一個異步服務器運行此MSDN article的稍微修改版本。這一次只允許一個客戶端加入。我應該打開和關閉每個事務的套接字嗎?
我的問題是,我可以打開和關閉每個事務(它使用TCP)的套接字嗎?如果我允許多個客戶端加入(通過修改代碼來偵聽更多的客戶端),似乎有些消息是交叉連接的。例如,如果我嘗試從兩臺客戶機的服務器上下載文件,則無論哪個客戶機最後一次啓動都會獲取該文件,並且第一次啓動該文件。或者,如果我開始從一個客戶端發送一些數據,然後從另一個客戶端開始,服務器收到了兩者的混合。由於我的程序不需要高性能(就像遊戲一樣),每個事務打開/關閉套接字是否有任何問題,或者是否有更好的方法來處理多個客戶端?
編輯 - 我忘記提到監聽器本身在整個生命週期中都會保持打開狀態,但每個客戶端都會爲事務本身打開和關閉一個新的套接字。在MSDN鏈接的代碼中,變量是「處理程序」。
HTTP如何管理而不會造成開銷? – 2013-02-21 19:07:36
套接字(用於收聽)通常在應用程序的整個生命週期中保持打開狀態,例如,對於端口80上是TCP套接字的HTTP。每個連接的客戶端基本上都存在於它自己的「會話」中。 – MarcF 2013-02-21 19:10:17
我相信他離開了聽筒打開,如果我不明白這個問題是錯的,他說的是打開和關閉客戶端插座 – 2013-02-21 19:12:23