如何从Linux上的特定接口发送UDP数据包?

如何在Linux上使用C发送来自特定接口的UDP数据包? 我应该使用绑定? 是否可以从没有IP地址的接口发送UDP?

谢谢。

您可以使用SO_BINDTODEVICE套接字选项将套接字绑定到特定的接口,但是这需要root权限。

或者,您可以设置IP_PKTINFO选项,并使用sendmsg进行发送,将in_pktinfoipi_ifindex设置为接口的索引。

使用绑定。 您不能通过没有IP地址的接口发送UDP数据包,因为UDP使用Internet协议,Internet协议需要IP地址。

您需要使用套接字选项IP_MULTICAST_IF。

看到这里: Multicast-HOWTO-6.html