我需要编写一个快速而脏的应用程序,通过以太网连接将一些数据写入远程计算机。 远程机器正在等待数据,我只是想在它上面传输一些数据来测试连接和带宽等。
我希望能够通过连接发送已知的数据模式(简单计数或重复模式),并能够将带宽增加x2,x10,x100等。
无需握手,CRC,特定数据格式,框架等,只需普通旧数据。
请...没有第三方库,只有C ++(或C或python)
答案 0 :(得分:5)
如果你可以使用netcat:
echo "BEEFCAKE" | nc remote.host port
答案 1 :(得分:3)
我可以推荐Beej's Guide to Network Programming。帮助我了解所有网络mumbo-jumbo。
但是,如果你需要一些非常快的东西,为什么不使用.NET呢?对于像这样的事情来说,这有很好的课程。您可以用10行编写数据。
P.S。不要因为这是为* nix编写而被抛弃。 Winsock具有完全相同的功能。
答案 2 :(得分:1)
当你说“IP:端口”时,你必须意味着你需要更高层而不仅仅是以太网帧。您应该阅读TCP / UDP / IP编程。我认为在线最好的资源是Beej's Guide.。这是针对伯克利或Windows插座的。
Python套接字教程here。
或者只是使用谷歌搜索“[语言]中的套接字编程”。
答案 3 :(得分:0)
答案 4 :(得分:0)
本教程似乎涵盖了您的需求:
答案 5 :(得分:0)
听起来您希望能够使链接饱和以用于测试目的,而不管接收器是否可以接受所有数据。因此,您不希望使用TCP,因为它已被确认,并且流控制以避免超出接收器。
可能最容易使用UDP,尽管如果你真的想直接编写以太网帧,你也可以考虑一个原始套接字(即如果你需要发送没有IP / UDP头的数据,只需原始以太网帧。在这种情况下你将需要目标MAC地址放入以太网帧,以便它到正确的位置。)
关于成帧和CRC:以太网硬件将对数据包进行帧化并生成/检查CRC。
编辑:如果您可以说明您要实现的目标,这可能有所帮助。是测试以太网链路/交换机的速度,还是看看发送和接收CPU有多快交换数据? (可能你可以通过以太网更快地发送数据,而不是接收CPU可以处理它,虽然这取决于以太网和CPU的速度,以及CPU运行的操作系统,它有多忙,它是如何网络的堆栈调整等。)。