【发布时间】:2012-11-20 15:00:20
【问题描述】:
我需要通过机器中所有具有多播功能的接口多播一个数据包。通过使用 setsockopt() 设置 IP_MULTICAST_IF,我可以选择通过哪个接口多播我的数据包。不幸的是,我只能选择一个(不能吗?)。一个可能的解决方案是设置 IP_MULTICAST_IF,通过该接口多播数据包重置 IP_MULTICAST_IF,发送另一个数据包等等。不幸的是,套接字连接时无法修改套接字选项......我的问题有什么可能的解决方案?
【问题讨论】:
-
你为什么要
connectsocket? -
您可能的解决方案(在发送每个数据包之前更改 IP_MULTICAST_IF 设置)对我来说很好。不过,Steve-o 是对的,如果您在多播套接字上调用 connect() 是错误的,因为这意味着套接字将丢弃来自任何源的传入数据包,而不是套接字连接到的源。 ..在多播情况下,这通常不是您想要的。请改用 sendto() 和 recvfrom()。
标签: c linux sockets networking