【发布时间】:2020-01-07 12:31:48
【问题描述】:
我如何知道哪个接口将用于特定的远程地址?
说,我有两个接口。其中一个是 192.168.0.50/24,另一个是 10.0.2.30/21,所有流量都通过它路由。因此,对于 192.168.0.100,我预计为 192.168.0.50,对于 10.0.3.40 或 8.8.8.8,我预计为 10.0.2.30。
我想询问操作系统,因为当我执行socket.connect 或socket.sendto 时,它会以某种方式将地址绑定到特定接口。那么我如何找出操作系统将绑定socket.connect上的套接字而不执行socket.connect的地址?
有两个目标:“测试”路由表并将套接字绑定到特定端口和对等方可访问的适配器。
与Can Python select what network adapter when opening a socket? 不同,我没有地址重叠的适配器,而且我不知道套接字将绑定到的适配器的地址。我的目标是找到这个地址。
【问题讨论】:
-
你不想
socket.connect的原因是什么?您的目标实际上是找出套接字将绑定到哪个接口,还是要避免打开将绑定到特定接口的套接字? -
@Pynchia 这是不相关的问题。
-
@Pynchia 谢谢你指出这个问题,我学到了一些新东西!
-
@MisterMiyagi 我在问题中回答了。