我正在编写一个应用程序来测试用于处理损坏数据的网络驱动程序。而且我想使用原始套接字发送这些数据,因此发送机器的 TCP-IP 堆栈不会更正它。
我仅在 Linux 上编写此应用程序。我有在系统调用中使用原始套接字的代码示例,但我真的很想保持我的测试尽可能动态,并用 Python 编写大部分(如果不是全部)。
我在网上搜索了一些关于在 python 中使用原始套接字的解释和示例,但没有发现任何真正有启发性的东西。只是一个非常古老的代码示例,它演示了这个想法,但绝不可行。
从我收集到的信息来看,Python 中的 Raw Socket 使用在语义上与 UNIX 的原始套接字几乎相同,但没有struct
定义数据包结构的 s。
我想知道是否最好不要在 Python 中编写测试的原始套接字部分,而是在带有系统调用的 C 中编写,然后从主要的 Python 代码中调用它?