2009-08-22 4 views
0

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

答えて

2

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

+0

私はそうではありませんでした。ありがとう! – computergeek6

関連する問題