2010-12-20 174 views
0

問題是關於網絡編程,更確切地說是服務器。假設有一個處理大量連接的服務器,因此有一個監聽套接字。顯然存在這種套接字的單個實例,這很明顯。現在我已經看到一些設計使用(a)每個連接使用一個套接字,用於傳入和傳出數據,以及(b)兩個套接字,一個用於傳入數據,另一個用於傳出數據。是什麼讓一個或另一個設計更可取?這兩種設計有哪些可能的原因/使用情況? 我所指的程序實際上是即時通訊程序(其中兩個),但理論上這適用於任何多連接服務器(任何服務器,然後)。網絡編程中的單套接字與雙套接字

希望這個問題不是太通用,我不現在對網絡編程知道很多,所以問這個問題。快速谷歌搜索也沒有幫助。

回答

1

TCP和UDP套接字是全雙工的。沒有任何理由使用單獨的套接字來輸入和輸出到同一個客戶端。這只是浪費了兩倍的內核資源。

+0

好的,就我所知,從一開始就有缺陷(對於雙插座),對吧?或者他們可以這樣做,因爲在連接丟失的情況下連接恢復?儘管如此,感謝您的解釋,它已經向我展示了我應該進一步調查TCP套接字(雙工是關鍵字)的方向。 – iksemyonov 2010-12-24 16:57:29

+0

@Semen Semenych:使用兩個插座就足夠了,不會以任何我能看到的方式幫助連接恢復。它只引入了額外的複雜性,現在其中一個連接可能關閉,另一個連接可能關閉。 – EJP 2011-01-10 03:17:03