TCP、DCCP、および UDP プロトコルを切り替えることができる単純なサーバーおよびクライアント アプリを作成しました。目標は、あるファイルから別のファイルに転送し、各プロトコルのトラフィックを測定することでした。これにより、さまざまなネットワーク設定でそれらを比較できます (結果がどうなるかは大まかにわかっていますが、正確な数値/グラフが必要です)。とにかく、異なるコンピューターで両方のアプリを起動して tcpdump を起動した後、4GB ファイルから最初の数 MB (~50MB) しか tcpdump ログに記録されません。アプリは標準の C/C++ コードで記述されており、Web 上のどこにでもあります。ここで何が問題なのか、何が間違っているのでしょうか?
--編集
私が使用するコマンドラインは次のとおりです。
tcpdump -s 1500 -w mylog
tcpdumpは、最初の ~55 秒だけパケットをキャプチャします。それは、クライアントがファイルをソケットに送信する必要がある時間です。その後、サーバーはファイルの受信とハード ドライブへの書き込みを続けますが、停止します。
--編集 2
ソースコード:
client.cpp
server.cpp
common.hpp
common.cpp
--最終編集
多くの人が指摘したように (そして私が疑ったように)、ソース コードにはいくつかの誤解/バグがありました。クリーンアップした後 (またはほとんど書き直した後)、必要に応じて tcpdump で動作します。@Laurent Parenteau からの回答を受け入れますが、問題に関連するのはポイント 5のみです。誰かが正しいコードに興味があるなら、ここにあります:
ソースコード編集