你需要额外的套接字才能进行3方向的沟通吗?
问题描述:
我通过TCP使用send()
和recv()
来建立客户端/服务器连接。这是在全双工工作就好了。但是,如果我希望第三方能够参加中期会议并就此进行沟通,那么它是如何完成的?我需要另一个插座吗?你需要额外的套接字才能进行3方向的沟通吗?
答
是的,你需要第二个插座。 TCP套接字是面向连接的,所以它们仅用于管理2个主机的单个连接。
通常,您可以使用在众所周知的端口上打开的套接字来建立从客户端到服务器的连接。然后,一旦建立连接,就可以将其转移到另一个套接字。
答
另一种选择可能是使用无连接的UDP。每个数据报将包含发件人。然而,由您决定构建一个有意义的无序数据报对话流。
+0
最后一部分可能被证明是非常不平凡的 – corsiKa 2011-04-03 17:24:25
只有第三?如果我希望向用户A和用户B广播消息,并且接收来自用户A的消息,那么我是否只需要一个额外的套接字? – cellpho 2011-04-03 17:23:36
@ cellpho;每个双向通信通道都需要一个插座。所以如果你有2个客户端和一个服务器,你至少需要在服务器上打开2个套接字。当然,除非你切换到UDP,但UDP确实难以管理。 – Heisenbug 2011-04-03 17:24:39
@ 0verbose谢谢你的帮助。显然,这些必须在同一个端口上,对吗?只需确保我在正确的轨道上!另外,在继续前进之前,我不必等待finsih的两个连接。我可以让第二个socket在会话中间连接,而不必多线程化它? – cellpho 2011-04-03 17:33:25