【问题标题】:What is multiplex socket communication?什么是多路套接字通信?
【发布时间】:2011-07-28 04:41:42
【问题描述】:

我在互联网上搜索了“multiplex socket”,但没有发现 Multiplex socket 与普通套接字行为之间的区别

普通套接字也可以双向通信(读写流)。

我想我一定对复用的概念理解有误,欢迎您对复用通信提出意见,谢谢!

编辑:我使用 Java 来实现多路复用套接字。

【问题讨论】:

  • 这个问题中的java在哪里?:D

标签: java sockets terminology tcp


【解决方案1】:

AFAIK,多路复用通信是共享少量套接字(例如一个)来为多个更高级别的流传递数据,例如主题或队列。

【讨论】:

  • 是的,“共享少量套接字”是一项要求。
【解决方案2】:

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

【讨论】:

  • +0:您可以通过两种方式运行多个连接。 ;)
  • 你的意思是双向通信的工作顺序是:“发送 -> 接收 -> 发送 -> 接收...”。而多路复用没有这样的序列?
  • 不,我不是那个意思。然而,Peter Lawrey 和 Sarnold 并没有试图改写它,而是比我 atm 更好地解释它:)。 (@ Peter Lawrey,我的意思是双向沟通,它读起来有点奇怪,但我的意思是或不是 xor (太糟糕的英语不能那样工作:P)。
【解决方案3】:

您在哪里找到对multiplex socket 的引用?我能想到两个答案:

首先,使用单个 UDP socket()recvfrom(2) 接收来自多个客户端的数据包。 (一种可能性是递归模式下的 BIND DNS 服务器;旧版本使用单个套接字,而不是 connect(2)为每个客户端创建一个新套接字。)

其次,使用单个连接将多个通道复用到一个流中;这是由例如完成的ssh(1) 当您要求 -X X11 转发或 -L-R 端口转发时。您可以通过单个 TCP 会话发送绑定到终端、X 服务器或远程端口的数据。

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-13
  • 2021-11-08
  • 1970-01-01
相关资源
最近更新 更多