【发布时间】:2014-08-05 17:27:00
【问题描述】:
我有一个绑定到端口 1900 的套接字来监听多播数据包。这部分效果很好。我成功接收到多播数据包。
我也使用同一个套接字将多播数据包发送到同一个端口 1900。在响应时,我希望收到一个单播数据包。根据 Wireshark 的说法,我的主机收到了单播数据包,但它没有出现在套接字中。
如果我删除到端口 1900 的绑定,那么单播数据包会出现在套接字中,但在这种情况下,套接字不再接收到多播数据包。
我查了一下,加入一个多播组没有任何意义。即使是绑定到端口 1900 并向端口 1900 发送多播的简单测试应用程序也无法接收单播响应。
主要问题是使用相同的源端口和目标端口吗?还是从特定端口发送多播数据包会阻止套接字将单播数据包发送到同一端口?
【问题讨论】:
-
您能展示一下您的 socket() 和 bind() 调用的代码吗?
-
我在 Windows 上遇到了和你一样的问题。你解决了这个问题吗?
-
我通过使用两个套接字解决了这个问题。一个用于监听组播数据包,另一个用于发送组播请求和接收单播响应
标签: sockets udp bind multicast