【问题标题】:Multicast join group with two different sockets具有两个不同套接字的多播连接组
【发布时间】:2014-03-19 06:42:34
【问题描述】:

我正在 C 中创建多播服务器/客户端 udp 应用程序,其中服务器正在向多播客户端组发送数据,如果未收到数据,则客户端请求重新传输。我想在服务器端和客户端创建两个套接字。在服务器端,一个套接字用于发送多播,另一个用于接收来自客户端的回复。在客户端,一个套接字用于接收数据,另一个用于回复服务器。让我感到困惑的是因为套接字连接到多播组......客户端使用套接字加入该组。我可以使用两个套接字和一个多播组还是应该创建两个组?什么是最有效的解决方案?我不能有延迟,因为它将是实时的……你有什么建议吗?

谢谢

【问题讨论】:

  • 我认为您应该使用相同的套接字来发送消息和获得确认。
  • 您是否有一些争论,为什么使用一个套接字发送而另一个套接字接收是不合逻辑的?如果我决定使用两个套接字,那么多播实现呢?你有经验吗?
  • 是的,我拥有许多标准协议,例如 101 103 modbus。它们是通信标准,没有为确认定义第二个端口。并且不要告诉我你将使用第三个套接字进行数据传输
  • 您需要在一台服务器端使用更多线程来处理确认,还是一个线程就足够了?那么为什么像 tftp 这样的协议使用不同的端口来发送和接收呢?对不起,我很困惑...
  • 不要混淆,会有两个线程,一个在该套接字上连续写入,一个在同时读取同一个套接字。

标签: c udp multicast multicastsocket


【解决方案1】:

在服务器端,一个套接字用于发送多播,另一个用于接收来自客户端的回复。

绝对不是。

在客户端,一个套接字用于接收数据,另一个用于回复服务器。

绝对不是。

对等方总是希望响应请求来自的 IP:port。如果添加另一个端口,则会增加无穷无尽的配置难度。如果您只使用一个端口,这很容易。为此,每个进程使用两个端口没有性能或架构方面的原因。

【讨论】:

  • 而且使用一个插座有没有缺点?我会有更多的客户,他们都可以通过一个套接字发送回复?从服务器端连续发送数据并同时接收所有这些回复是否安全?服务器是否应该有更多线程来处理回复?
  • “使用两个端口没有性能或架构原因”的哪一部分您不明白?
  • 延迟部分,如果我需要实时应用,会不会影响一个socket和一个线程的处理延迟?
  • 我没有说任何关于一个线程的事情。你的问题也没有。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-14
  • 1970-01-01
  • 2011-04-07
  • 2017-07-23
  • 1970-01-01
  • 2020-07-15
相关资源
最近更新 更多