【发布时间】:2020-11-06 11:55:42
【问题描述】:
我有一个绑定到 0.0.0.0 的 UDP 套接字。之后,我如何知道接收数据包的确切网络接口?我试过getsockname,但它返回0.0.0.0。
【问题讨论】:
-
如果套接字绑定到 0.0.0.0,它不会绑定到特定的网络接口。这意味着您无法获取套接字的接口。您只能获取特定 UDP 数据包进入的接口,但套接字上的下一个数据包可能已经到达不同的接口。要找出数据包进入的接口,请参阅How to tell which interface the socket received the message from?
-
是的,这行得通。我想要 Windows 和 Linux 上的解决方案。在 Windows 上,还可以通过 WSARecvMsg API 获得 IP_PKTINFO。你的指针有帮助。谢谢。
-
Steffen,是否也可以获取接口类型,即。 eth0 还是 wifi 等?
-
不是直接的。但是从接口 id 到接口属性是一个不同的问题,应该作为一个新问题来问。
-
当然,如果没有直接的方法,那就是单独的上下文。同意。
标签: c sockets networking