2011-03-11 58 views
3

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

我试过Twisted的pairudp.py的例子,但是它失败了,导致一个“ImportError:No module named eunuchs.tuntap”。对python-eunuchs进行apt-cache搜索没有任何结果,并且看着Ubuntu的package search,我可以看到python-eunuchs自从Dapper以来还没有成为Ubuntu的一部分,大约是2006年。

在任何情况下, Twisted Pair项目本身就被列在它的twistedmatrix.com页面中,因此我会对使用它的任何库启动一个项目而犹豫不决。

任何人都可以提供指针,甚至是一个(工作?)的例子,我如何使用Twisted 10.1/10.2来做到这一点?

更新

由于雕文指出的那样,我试图以复杂的方式,可以简单地加以解决,以解决问题。由于我可以使用len(data)来获取分组数据的长度,并且由于UDP packet header的长度是8个字节,所以totalSizeOfUdpPacket = 8 + len(data)。

* 捂脸 *

+0

为什么len(数据)不够? – Glyph 2011-03-11 21:03:40

+1

在下面发表您的自我回答,因为它可能值得为其他人保留。 – detly 2011-03-14 06:26:38

+1

这不是给出的答案的矛盾,但我想指出,我最近删除了太监的依赖。双绞线现在没有额外的依赖关系(超出Twisted的整体)。 twisted.pair.tuntap现在也具有相当不错的测试覆盖率,甚至还有一些文档。 – 2014-02-16 13:46:09

回答

2

由于雕文指出的那样,你想以复杂的方式,可以简单地加以解决,以解决问题。由于您可以使用len(data)来获取分组数据的长度,并且由于UDP分组头的长度为8个字节,所以totalSizeOfUdpPacket = 8 + len(data)。