网络编程中的单套接字与双套接字

网络编程中的单套接字与双套接字

问题描述:

问题是关于网络编程,更确切地说是服务器。假设有一个处理大量连接的服务器,因此有一个监听套接字。显然存在这种套接字的单个实例,这很明显。现在我已经看到一些设计使用(a)每个连接使用一个套接字,用于传入和传出数据,以及(b)两个套接字,一个用于传入数据,另一个用于传出数据。是什么让一个或另一个设计更可取?这两种设计有哪些可能的原因/使用情况? 我所指的程序实际上是即时通讯程序(其中两个),但理论上这适用于任何多连接服务器(任何服务器,然后)。网络编程中的单套接字与双套接字

希望这个问题不是太通用,我不现在对网络编程知道很多,所以问这个问题。快速谷歌搜索也没有帮助。

TCP和UDP套接字是全双工的。没有任何理由使用单独的套接字来输入和输出到同一个客户端。这只是浪费了两倍的内核资源。

+0

好的,就我所知,从一开始就有缺陷(对于双插座),对吧?或者他们可以这样做,因为在连接丢失的情况下连接恢复?尽管如此,感谢您的解释,它已经向我展示了我应该进一步调查TCP套接字(双工是关键字)的方向。 – iksemyonov 2010-12-24 16:57:29

+0

@Semen Semenych:使用两个插座就足够了,不会以任何我能看到的方式帮助连接恢复。它只引入了额外的复杂性,现在其中一个连接可能关闭,另一个连接可能关闭。 – EJP 2011-01-10 03:17:03