0

ネットワークインターフェイスをプロミスキャスモードに設定し、すべての着信パケットを受信するソケットを作成し、ループに入ってパケットをバッファに読み込み、IPヘッダーの場所へのポインタを設定してから、そのip_lenフィールドの値。問題は、印刷された値が非常に高いことです。read()は84のようなものを返し、プログラムは21504を出力します。Wiresharkでパケットサイズを確認しましたが、各パケットの合計サイズはread()の戻り値からそれほど遠くありません。ip_lenを取得して正常なデータを取得するにはどうすればよいですか?

4

1 に答える 1

2

エンディアンの問題のように聞こえます。21504は0x5400であり、バイトスワップは0x0054 = 84です。値を読み取るためにntohs(ip_len)を使用していることを確認してください。

于 2009-08-22T18:20:24.267 に答える