多路复用套接字通信是什么?

7
我在互联网上搜索了“多路复用套接字”,但没有找到多路复用套接字和普通套接字行为之间的区别
普通套接字也可以在两个方向(读取和写入流)上进行通信。
我认为我可能对多路复用的概念有误,欢迎您对多路复用通信发表意见,谢谢!
编辑:我使用Java实现多路复用套接字。

这个问题中 Java 在哪里?:D - Thomas Jungblut
3个回答

7
据我所知,多路复用通信是共享少量套接字(例如一个)以传递多个高级流(例如主题或队列)的数据。

1
是的,“共享少量套接字”是一个要求。 - 卢声远 Shengyuan Lu

6

多路复用是通过一个套接字运行多个连接,所有这些连接的消息都将在该套接字上(或发送)接收。因此,这不是双向通信,而是由一个套接字处理的多个不同通信通道。


+0: 你可以同时运行多个双向连接。 ;) - Peter Lawrey
你的意思是双向通信按照“发送->接收->发送->接收...”的顺序进行,而多路复用没有这样的顺序吗? - 卢声远 Shengyuan Lu
不,我的意思不是那个。然而,Peter Lawrey和Sarnold比我更好地解释了它 :)。(@ Peter Lawrey,我的意思是双向通信,这听起来有点奇怪,但我是指或者而不是异或(太糟糕了,英语不能这样用:P)。 - Roy T.

2
你在哪里看到“多路插座”这个词?我能想到两种答案:
首先,使用单个UDP socket()recvfrom(2)从多个客户端接收数据包。(一个可能是BIND DNS服务器以递归模式运行时,旧版本使用单个套接字而不是为每个客户端connect(2)建立新的套接字。)
其次,使用单个连接将多个通道复用到一个流中;例如,在请求-X X11转发或-L-R端口转发时,ssh(1)就会这样做。你可以将终端、X服务器或远程端口的数据都发送到单个 TCP会话中。

https://idea.popcount.org/2016-11-01-a-brief-history-of-select2/ - Artur A

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接