您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

打开套接字时,Python是否可以选择哪个网络适配器?

打开套接字时,Python是否可以选择哪个网络适配器?

在Windows上,如果知道要使用的接口的IP地址,则只需在连接前绑定该IP地址即可。在Linux上,按照JimB的建议使用套接字选项SO_BINDTODEVICE(似乎也是特权调用)。

即在Windows上

import socket
s = socket.socket(socket.AF_INET, socket.soCK_STREAM)
s.bind(('192.168.0.1', 0))
s.connect(('...'))

在Windows下绑定源地址,即使该IP地址的路由度量成本较高,也会选择与该设备具有相同IP地址的接口。但是,这在Linux下不起作用,因为它总是用所选设备的IP地址覆盖源地址。路由仅基于目标地址来完成。似乎唯一的例外是,如果将源地址设置为127.0.0.1,那么Linux会阻止这些数据包从该包装箱中取出。

python 2022/1/1 18:46:56 有346人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶