【问题标题】:Raw UDP packets using Twisted使用 Twisted 的原始 UDP 数据包
【发布时间】:2011-03-11 18:17:25
【问题描述】:

我目前正在使用 Twisted 10.1 来接收和解析 UDP 数据包,但是 reactor.listenUDP() 的标准实现只允许我访问数据包数据,并且我需要从 UDP 标头中获取数据包长度。

我已经尝试过 Twisted 的 pairudp.py 示例,但它失败并显示“ImportError:没有名为 eunuchs.tuntap 的模块”。对 python-eunuchs 进行 apt-cache 搜索一无所获,并且查看 Ubuntu 的 package search,我可以看到自大约 2006 年 Dapper 以来,python-eunuchs 就没有成为 Ubuntu 的一部分。

无论如何,Twisted Pair 项目本身在其twistedmatrix.com 页面上列为未维护,因此我会非常犹豫是否要使用它的任何库启动项目。

任何人都可以向我提供有关如何使用 Twisted 10.1 / 10.2 执行此操作的指针甚至(工作?)示例吗?

更新

正如 Glyph 指出的那样,我正在尝试以一种可以简单解决的复杂方式来解决问题。由于我可以使用 len(data) 获取数据包数据的长度,并且由于 UDP packet header 的长度为 8 个字节,因此 totalSizeOfUdpPacket = 8 + len(data)。

*掌心*

【问题讨论】:

  • 为什么 len(data) 不够用?
  • 在下面发布您的自我回答,因为它可能值得为其他人保留。
  • 这与给出的答案并不矛盾,但我想指出我最近删除了太监依赖。 Twisted Pair 现在没有额外的依赖项(除了那些 Twisted 总体上的依赖项)。 twisted.pair.tuntap 现在也有很好的测试覆盖率,甚至还有一点文档。

标签: python udp twisted


【解决方案1】:

正如 Glyph 所指出的,您正在尝试以一种可以简单解决的复杂方式来解决问题。由于可以使用len(data)获取包数据的长度,并且由于UDP包头的长度为8字节,所以totalSizeOfUdpPacket = 8 + len(data)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-22
    • 2011-05-10
    • 2011-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多