我正在编写一款测试网络驱动程序处理损坏数据的应用程序。我考虑使用原始套接字来发送这些数据,以便发送机的TCP-IP堆栈不会对其进行纠正。
我完全在Linux上编写此应用程序。我有使用系统调用中的原始套接字的代码示例,但我真的很想让我的测试尽可能动态,并且大部分甚至全部都用Python编写。
我已经在网上搜索了一些关于Python中使用原始套接字的解释和示例,但没有找到任何真正有启发性的东西。只是一个非常古老的代码示例,展示了这个想法,但却没有任何作用。
从我所了解的情况来看,在Python中使用原始套接字几乎与UNIX的原始套接字语义相同,但没有定义包结构的struct。
我在想,是否最好不要使用Python编写测试的原始套接字部分,而是使用C编写系统调用,并从主Python代码中调用?
ethtool -K tx off
(无论在哪个Linux版本中...)。 - brice