我编写了一个简单的服务器和客户端应用程序,可以在 TCP、DCCP 和 UDP 协议之间切换。目标是将文件从一个文件传输到另一个文件并测量每个协议的流量,因此我可以针对不同的网络设置比较它们(我大致知道结果应该是什么,但我需要准确的数字/图表)。无论如何,在不同的计算机上启动这两个应用程序并启动 tcpdump 后,我只能从 4GB 文件中获取 tcpdump-log 的前几 MB(~50MB)。这些应用程序是用标准的 C/C++ 代码编写的,可以在网络上的任何地方找到。可能是什么问题或我在这里做错了什么?
--编辑
我使用的命令行是:
tcpdump -s 1500 -w mylog
tcpdump仅在前 ~55 秒内捕获数据包。那是客户端需要将文件发送到套接字的时间。之后它停止,即使服务器继续接收文件并将其写入硬盘驱动器。
--编辑2
源代码:
client.cpp
server.cpp
common.hpp
common.cpp
--编辑最终
正如你们中的许多人所指出的(正如我所怀疑的),源代码中有几个误解/错误。在我清理它(或几乎重写它)之后,它可以根据需要与 tcpdump 一起使用。我会接受@Laurent Parenteau 的回答,但仅限于第 5 点。因为它与问题唯一相关。如果有人对正确的代码感兴趣,这里是:
源代码编辑