我有一个套接字绑定到一个端口1900来监听多播数据包。这部分工作得很好。我成功地接收了多播数据包。
另外,我使用相同的套接字将多播数据包发送到同一个端口1900。在响应时,我希望收到一个单播包。根据Wireshark的说法,我的主机接收到了单播数据包,但是它没有出现在套接字中。
如果删除绑定到端口1900,那么单播数据包将出现在套接字中,但在这种情况下,套接字将不再接收多播数据包。
我查过了,加入一个多播组没有任何意义。即使是一个简单的测试应用程序,它绑定到端口1900并将多播发送到端口1900,也无法接收单播响应。
主要问题是使用相同的源端口和目标端口吗?还是从特定端口发送多播数据包会阻止套接字将单播数据包发送到同一个端口?
发布于 2014-11-27 12:08:55
昨天我在windows7上遇到了这个问题,并找出了根本原因。假设您正在执行SSDP MSearch,接收响应,并侦听SSDP通知。
单播响应被此服务吃掉,永远无法到达套接字。
解决方案1:
您不需要更改代码,只需停止SSDP发现服务即可。一切都会好起来的。
解决方案2:不需要停止SSDP发现服务。但是你需要两个插座:
https://stackoverflow.com/questions/25144831
复制相似问题