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

jac*_*hab 7 c sockets linux udp

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

谢谢.

Osw*_*ald 8

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

  • 绑定没有帮助。UDP 数据包的源 IP 是正确的(即,它是我尝试发送的接口的 IP),但数据包本身来自默认接口。 (2认同)

Has*_*kun 5

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

或者,您可以设置IP_PKTINFO选项,并将其sendmsg用于发送,请将in_pktinfos 设置为ipi_ifindex接口的索引。