我需要编写一个快速而肮脏的应用程序,以通过以太网连接将一些数据写入远程机器。远程机器正在等待数据,我只想向它发送一些数据以测试连接和带宽等。
例如,我希望能够通过连接发送已知模式的数据(简单计数或重复模式),并能够将带宽增加 x2、x10、x100 等。
无需握手、CRC、特定数据格式、帧等,只需简单的旧数据。
请...没有第三方库,只有 C++(或 C,或 python)
我需要编写一个快速而肮脏的应用程序,以通过以太网连接将一些数据写入远程机器。远程机器正在等待数据,我只想向它发送一些数据以测试连接和带宽等。
例如,我希望能够通过连接发送已知模式的数据(简单计数或重复模式),并能够将带宽增加 x2、x10、x100 等。
无需握手、CRC、特定数据格式、帧等,只需简单的旧数据。
请...没有第三方库,只有 C++(或 C,或 python)
如果可以使用 netcat:
echo "BEEFCAKE" | nc remote.host port
我可以推荐Beej 的网络编程指南。帮助我理解了所有的网络大话。
但是,如果您需要真正快速的东西,为什么不使用 .NET?这有很好的类来做这样的事情。您可以在 10 行中写入数据。
PS不要因为这是为 *nix 编写的而感到厌烦。Winsock 具有完全相同的功能。
当您说“IP:端口”时,您必须意味着您需要比以太网框架更高的层。您应该阅读 TCP/UDP/IP 编程。我认为最好的在线资源是Beej's Guide。. 这是针对 berkeley 或 windows 套接字的。
Python 套接字教程在这里。
或者只是使用谷歌搜索“[语言]中的套接字编程”。
本教程似乎涵盖了您想要的内容:
听起来您希望能够使链路饱和以进行测试,而不考虑接收器是否可以接受所有数据。因此,您将不想使用 TCP,因为它已被确认,并且流受控以避免超出接收器。
使用 UDP 可能最容易,但如果您真的想直接编写以太网帧,您也可以考虑使用原始套接字(即,如果您需要发送没有 IP/UDP 标头的数据,只需发送原始以太网帧。在这种情况下,您需要放入以太网帧的目标 MAC 地址,以便它到达正确的位置)。
关于成帧和 CRC:以太网硬件将成帧数据包并生成/检查 CRC。
编辑:如果你能说明你想要达到的目标,它可能会有所帮助。是测试以太网链路/交换机的速度,还是查看发送和接收 CPU 交换数据的速度?(您通过以太网发送数据的速度可能比接收 CPU 处理它的速度更快,尽管这确实取决于以太网和 CPU 的速度,以及 CPU 正在运行的操作系统、它的繁忙程度、它的网络情况堆栈已调整等)。