具有多个接口的 Python UDP 套接字

2024-03-22

我正在 Windows XP 机器上用 python2.7 编写脚本。本机使用不同的网卡连接到多个网络。

我遇到了一个问题,我已将 UDP 套接字绑定到特定接口(我知道您可以通过仅提供网卡现有的 IP 地址来在 Windows 中完成此操作)

self.sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
self.sock.bind(('10.31.9.0', 6466)) #<<< 10.31.9.0 is address of desired card

然后我将超时设置为5秒

self.sock.settimeout(5)

然后我尝试向服务器发送一条消息,我可以证明该消息存在且有效。然后等待回复。

self.destintation = ('10.42.40.34', 62434)

# Send the msg
self.sock.sendto(msg, self.destintation)

# receive data
reply, addr = self.sock.recvfrom(1024)

然而一个socket.timeout总是被抛出。所以我打开wire shark看看出了什么问题,结果发现我的初始消息从未发送到所需的接口上。

我看到的是不同接口上的 arp 广播(10.10.10.12 )从我的机器询问谁连接到我想要的目标IP:

1   0.000000    IntelCor_8c:6d:97   Broadcast   ARP 42      Who has 10.42.40.34?  Tell 10.10.10.12

当然,广播没有响应,因为从 10.10.10.12 接口无法访问 10.42.40.34 地址/机器

我如何告诉Python发送ARP广播'10.31.9.0'?我做错了什么?

EDIT:

附加信息> 我正在使用的接口的网络是 B 类 (网络掩码为 255.255.0.0)

The interface IP is : 10.31.9.0 

The target IP is: 10.42.40.34. 

我想知道这个问题是否是由于我的目标位于单独的子网上而导致的。但是,正如相关问题中所述here https://stackoverflow.com/questions/38106302/python-wont-receive-udp-packetsnon-broadcast。有从服务器到我的流量...=/

UPDATE:

“路线 PRINT 10*”的结果

Active Routes:
Network Destination        Netmask          Gateway       Interface  Metric
         10.0.0.0        255.0.0.0      10.10.10.12     10.10.10.12   10
      10.10.10.12  255.255.255.255        127.0.0.1       127.0.0.1   10
        10.31.0.0      255.255.0.0        10.31.9.0       10.31.9.0   10
        10.31.9.0  255.255.255.255        127.0.0.1       127.0.0.1   10
   10.255.255.255  255.255.255.255      10.10.10.12     10.10.10.12   10
   10.255.255.255  255.255.255.255        10.31.9.0       10.31.9.0   10
Default Gateway:        153.4.84.1
===========================================================================
Persistent Routes:
  None

更新#2全路线打印

Active Routes:
Network Destination        Netmask          Gateway       Interface  Metric
          0.0.0.0          0.0.0.0       153.4.84.1     153.4.85.81   10
        10.10.0.0      255.255.0.0      10.10.10.12     10.10.10.12   10
      10.10.10.12  255.255.255.255        127.0.0.1       127.0.0.1   10
        10.31.0.0      255.255.0.0        10.31.9.0       10.31.9.0   10
        10.31.9.0  255.255.255.255        127.0.0.1       127.0.0.1   10
   10.255.255.255  255.255.255.255      10.10.10.12     10.10.10.12   10
   10.255.255.255  255.255.255.255        10.31.9.0       10.31.9.0   10
        127.0.0.0        255.0.0.0        127.0.0.1       127.0.0.1   1
       153.4.84.0    255.255.252.0      153.4.85.81     153.4.85.81   10
      153.4.85.81  255.255.255.255        127.0.0.1       127.0.0.1   10
    153.4.255.255  255.255.255.255      153.4.85.81     153.4.85.81   10
     192.168.56.0    255.255.255.0     192.168.56.1    192.168.56.1   20
     192.168.56.1  255.255.255.255        127.0.0.1       127.0.0.1   20
   192.168.56.255  255.255.255.255     192.168.56.1    192.168.56.1   20
        224.0.0.0        240.0.0.0      10.10.10.12     10.10.10.12   10
        224.0.0.0        240.0.0.0        10.31.9.0       10.31.9.0   10
        224.0.0.0        240.0.0.0      153.4.85.81     153.4.85.81   10
        224.0.0.0        240.0.0.0     192.168.56.1    192.168.56.1   20
  255.255.255.255  255.255.255.255      10.10.10.12     10.10.10.12   1
  255.255.255.255  255.255.255.255        10.31.9.0       10.31.9.0   1
  255.255.255.255  255.255.255.255      153.4.85.81     153.4.85.81   1
  255.255.255.255  255.255.255.255     192.168.56.1    192.168.56.1   1
  255.255.255.255  255.255.255.255     192.168.56.1               5   1
Default Gateway:        153.4.84.1
===========================================================================
Persistent Routes:
  None

根据“route”的输出,您的 10.10.10.12 和 10.31.9.0 接口似乎已配置了重叠的子网。操作系统选择对所有 10.x.x.x 地址使用 10.10.10.12,因为它是第一个适用的规则。

子网重叠通常是网络配置错误:可能希望 10.10.x.x 和 10.31.x.x 是有效子网,并且两者都应使用网络掩码 255.255.0.0,因此 10.10.10.12 使用的当前网络掩码为 255.0.0.0接口不正确。

(如果目的是使所有 10.x.x.x 请求都使用 10.10.10.12 接口,除了 10.31.x.x 中应使用 10.31.9.0 地址的请求,则可以通过更改“度量”来“捏造”修复' 的 10.31.0.0 路由规则,以便在检查 10.x.x.x 规则之前,10.31.x.x 地址的任何内容都与该规则匹配。您可以使用route命令来进行更改,但绝对不推荐!修复重叠子网是正确的解决方案。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

具有多个接口的 Python UDP 套接字 的相关文章

  • 在 Robot 框架中的测试套件中设置会话 cookie

    我的应用程序是一个 RESTful API 仅当会话 cookie 存在时才有效 不幸的是 我总是需要在一个网页登录获取 cookie 并传递会话cookie到 API 来建立会话 我能够找出解决方案来验证会话 cookie 并将其传递给
  • Pandas - 按每个可能的键组合聚合

    我有一个 DataFrame Pandas 我想通过 A B C 和 D 列的组合尽可能按数据进行分组 假设它具有以下形式 A B C D E F G 0 Y X Y Z 1 2 7 1 Y X Y Z 3 4 8 2 X Y U V 1
  • 使用 python 中的 java 库

    我有一个 python 应用程序和 java 应用程序 python 应用程序为 java 应用程序生成输入并在命令行上调用它 我确信一定有一个更优雅的解决方案 就像使用 JNI 从 Java 调用 C 代码一样 有什么指点吗 仅供参考 我
  • Conda 无法在 Powershell 中激活

    我已经在我的 Windows 10 笔记本电脑上安装了 anaconda 我正在尝试激活名为的Python环境pyenv 首先 我检查conda env list在我的笔记本电脑中 这是 powershell 上的输出 PS C Users
  • uwsgi + Django REST框架:空闲时间后很少有缓慢的请求

    我正在运行 Django REST 框架 白天每分钟的请求率相当低 我注意到一个我无法解释或重现的问题 每天 在夜间或清晨 当我的 RPM 接近于零时 我会收到 1 10 个超慢的请求 我的平均响应时间100 到 200 毫秒之间 但是这个
  • 在 Chaquopy 中转换数组和张量

    我该怎么做呢 我看到你的帖子说你可以将 java 对象传递给 Python 方法 但这不适用于 numpy 数组和 TensorFlow 张量 以下以及其各种变体是我尝试过的 但没有成功 double anchors new double
  • 嵌套重组 - Django

    我有一个包含以下字段的模型 日期 员工 和 计划时间 每个员工对于不同的日期都有不同的计划工作时间 我正在尝试构建我的模板 其中员工按行列出 他们的计划工作时间列在正确的相应日期下的列中 像这样的东西 https i stack imgur
  • Windows 中的信号处理

    在Windows中 我试图创建一个等待SIGINT信号的python进程 当它收到SIGINT时 我希望它只打印一条消息并等待SIGINT的另一次出现 所以我使用了信号处理程序 这是我的 signal receiver py 代码 impo
  • 使用 theano 进行多处理

    我正在尝试将 theano 与 cpu 多处理和神经网络库 Keras 结合使用 I use device gpu标记并加载 keras 模型 然后 为了提取超过一百万张图像的特征 我使用多处理池 该函数看起来像这样 from keras
  • BeautifulSoup 抓取街道地址

    我正在使用最底部的代码来获取weblink 以及清真寺名称 不过我也想得到面值 and 街道地址 请帮助我被困住了 目前我得到以下信息 Weblink div class subtitleLink a href http www salat
  • 从 python 的单词列表中查找最长的常见单词序列

    我搜索了很多解决方案 确实发现了类似的问题 这个答案 https stackoverflow com questions 21930757 longest repeated substring返回可能不属于输入列表中所有字符串的最长字符序列
  • 为 pandas 数据框中的两列创建邻接矩阵

    我有一个以下形式的数据框 index Name A Name B 0 Adam Ben 1 Chris David 2 Adam Chris 3 Ben Chris 我想获得邻接矩阵Name A and Name B ie Adam Ben
  • UTF-8 在 Python 日志记录中,如何?

    我正在尝试使用 Python 的日志记录包将 UTF 8 编码的字符串记录到文件中 作为一个玩具示例 import logging def logging test handler logging FileHandler home ted
  • 如何检查两个数据集的匹配列之间的相关性?

    如果我们有数据集 import pandas as pd a pd DataFrame A 34 12 78 84 26 B 54 87 35 25 82 C 56 78 0 14 13 D 0 23 72 56 14 E 78 12 31
  • 将 numpy 记录数组转换为字典列表的有效方法

    如何转换下面的 numpy 记录数组 recs Bill 31 260 0 Fred 15 145 0 r rec fromrecords recs names name age weight formats S30 i2 f4 到字典列表
  • Django ConnectionAbortedError:[WinError 10053]已建立的连接被主机中的软件中止

    我将 django 与 postgresql 一起使用 每当我尝试保存或删除任何内容时 都会发生此错误 Traceback most recent call last File c program files x86 python35 32
  • java.net.ServerSocket.accept () 在 Android 上不返回

    我正在尝试找到一种方法来远程登录到未root的机器人 我有INTERNET权限处于活动状态 我的设备与我的设备连接在同一网络上Mac OS X通过 WiFi 我可以 ping 通我打开的端口 在最初的实验中 我让它在有根测试设备上工作 但我
  • 有没有办法只从 python 列表中输出数字?

    简单的问题 list 1 asdada 1 123131 131 blaa adaraerada 0 000001 34 12451235265 stackoverflow is awesome 我想创建一个list 2这样它只包含数字 l
  • 如何更改 PyGame 中声音或音乐的音量?

    如何更改 PyGame 中的音量 例如通过设置更改音量 我制作了 UI 元素 只需要知道如何更改音量即可 我知道我说不清楚 但你可以理解我 请帮忙 更改音量取决于您是否正在播放pygame mixer Sound https www pyg
  • Python正则表达式:如何用不同的值替换出现的每个实例?

    假设我有这个字符串 s blah blah blah 使用Python正则表达式 如何用不同的值替换 blah 的每个实例 例如 我有一个值列表v 1 2 3 你可以使用re sub打回来 http docs python org libr

随机推荐

  • SwiftUI 中的位移:如何使用哈希将字符串转换为特定的数组索引?

    我正在尝试将 typescript 转换为 Swift 我目前正在研究使用字符串输入 在本例中是用户的首字母缩写 来设置颜色 在我们的前端应用程序中 使用以下 JavaScript 代码 export default function ge
  • PHPUnit 找不到“TestCase”类

    要使用项目的 PHPUnit 运行测试 我执行以下操作 php vendor bin phpunit tests SomeClassTest php鉴于以下类声明 它可以正常工作 class SomeClassTest extends PH
  • 从接口访问参数 (Fortran)

    我正在使用参数来修复所用类型的精度 在我尝试在接口中使用相同类型之前 这种方法工作得很好 考虑这个小例子 module Hello implicit none save integer parameter K selected real k
  • matplotlib 的 axvline 中存在错误?

    根据文档页面 http matplotlib sourceforge net api pyplot api html http matplotlib sourceforge net api pyplot api html使用 axvline
  • 需要帮助从 C# 中的字符串获取 IP

    所以我正在 C 中做一个小项目 想要读取一个长文本文件 当它遇到该行时 X Originating IP 192 168 1 1 我想获取 IP 并仅显示到控制台识别的 IP 所以只需192 168 1 1等等 我无法理解正则表达式 任何能
  • 如何检测用户脚本是否是从 Chrome 商店安装的?

    我想在我的 Greasemonkey UserScript 更新可用时通知用户 但是 当用户从 Chrome Web Store 安装脚本时 我不想打扰 因为它具有自动更新功能 我首先想到使用 browser chrome但 Chrome
  • Glassfish 3.1.2 的 JDBCRealm 有一个新的密码加密算法字段。它是做什么用的?

    Glassfish JDBC 领域具有多个可以设置的不同属性 我感兴趣的是摘要算法 and 密码加密算法属性 这就是它们在管理控制台中显示的方式 据我所知 第二个是从 Glassfish 3 1 2 开始的新版本 I have 查阅了Gla
  • Cordova 文件插件 readAsDataURL 不返回文件数据

    我尝试使用 Cordova 文件插件的 readAsDataURL 函数来获取视频文件的 base64 版本 但没有成功 我的代码如下所示 recordVideo return new Promise resolve gt let opti
  • List<> .ForEach 未找到[重复]

    这个问题在这里已经有答案了 我正在将 Windows Phone 应用程序移植到 Win 8 我发现了这个绊脚石 但找不到解决方案 我有一个 List
  • 使用javascript点击重复表单

    addDetails const divCreate document createElement div divCreate appendChild document createTextNode Some text divCreate
  • Spring 4 + WebSocket + SockJS + STOMP 方法不允许

    我最近开发了一个使用 Spring 4 Websockets STOMP SockJS 的系统 我已成功创建连接并发送 接收消息 但在某些情况下 随机地 我无法确定原因 我收到 方法不允许 错误 并且未创建连接且无法发送 接收消息 我最初的
  • 使用 boost::bind 将成员函数绑定到 boost::bisect?

    我遇到了问题this https stackoverflow com questions 8245909 how to use boost bisection以前但现在它在某种程度上起作用了 现在我有以下问题 在使用相同的函数调用 boos
  • 如何在 EF Code First 中映射表拆分?

    如何使用 EF Code First 映射表拆分 例如 描述了 EDMX 的表拆分here http thedatafarm com blog data access ef table splitting ndash the opposit
  • ElasticSearch 随机得分与 boost 相结合?

    我正在使用 Firebase 构建 iOS 应用程序 并使用 ElasticSearch 作为搜索引擎来获取更高级的查询 我正在尝试实现一个可以根据查询从索引中获取随机记录的系统 我已经使用带有种子的 random score 函数完成了这
  • 合并关联数组

    假设我有两个关联数组 有没有办法使用连接运算符之类的东西来合并它们 我尝试了这个 但它不起作用 module tb initial begin int a int 1 1 2 2 int b int 3 3 4 4 display a a
  • Spark Listener EventLoggingListener 抛出异常 / ConcurrentModificationException

    在我们的应用程序 Spark 2 0 1 中 这个异常经常出现 我找不到任何关于此的信息 可能是什么原因 16 10 27 11 18 24 ERROR LiveListenerBus Listener EventLoggingListen
  • Struts2中读取上传文件的内容

    如何读取上传文件的内容execute 的方法Action班级 我可以将文件上传到服务器上 但不知道如何读取该文件的内容 我们必须先将其保存在服务器上吗 或者我们可以直接读取吗 选项 1 创建 servlet 我建议你使用 apache co
  • Primefaces tabView 在选项卡更改时执行表单验证

    我有一个严重的问题p tabView成分 我已经设定dynamic true and cache false 到选项卡视图 其中一个选项卡具有一些已设置的输入组件required true 现在 当我每次更改选项卡时 都会进行表单验证 并且
  • C 中获取变量的最大值

    C 中是否有一个函数可以返回这样的变量的最大值 我将在下面的示例中将函数命名为 maxvalue int a printf d maxvalue a 32767 unsigned int b printf d maxvalue b 6553
  • 具有多个接口的 Python UDP 套接字

    我正在 Windows XP 机器上用 python2 7 编写脚本 本机使用不同的网卡连接到多个网络 我遇到了一个问题 我已将 UDP 套接字绑定到特定接口 我知道您可以通过仅提供网卡现有的 IP 地址来在 Windows 中完成此操作