Rud*_*lis 3 c sockets posix multicast multicastsocket
我找不到一个工作示例,所以我将发布一个问题(让我们看看是否可以将其简化为 MVP 代码示例)。所以,我需要做 mdns 查询,我可以使用两个套接字(一个用于发送/第二个用于接收),但到目前为止我还无法使其与单个套接字一起工作。
所以我正在执行的步骤是:
枚举主机上的所有接口地址。然后对于每个主机:
因此,根据我在第 2 步中执行的操作,读取或写入失败:
那么我需要绑定到哪个地址呢?另外,由于IP_ADD_MEMBERSHIP
参数ip_mreq
有接口字段,我真的需要IP_MULTICAST_IF
吗?
如果您绑定到特定的接口地址(至少在 Linux 上),您将无法接收多播。如果绑定到多播地址,则无法发送。
您需要做的是绑定到INADDR_ANY
,然后当您设置该IP_ADD_MEMBERSHIP
选项时,您将设置要在其上接收多播数据包的接口地址。如果您有多个接口,则可以为要绑定到的每个接口调用此方法。