0

私はlibpcapで遊んでいて、奇妙なことを見つけました。

出力の一部は次のとおりです。「From:src_addr、To:dst_addr」

1つのステートメント、つまりprintf( "From:%s、To:%s \ n"、inet_ntoa(ip_hdr-> ip_src)、inet_ntoa(ip_hdr-> ip_dst));で印刷する場合。印刷されたdst_addrは、印刷されたsrc_addrとまったく同じです。ただし、この行にブレークポイントを設定し、gdbを使用してip_srcとip_dstに格納されている値を調べると、それらは異なります。

2つのステートメントで記述されている場合、つまりprintf( "From:%s、"、inet_ntoa(ip_hdr-> ip_src)); printf( "宛先:%s \ n"、inet_ntoa(ip_hdr-> ip_dst)); その後、問題は解消され、出力のsrc_addrとdst_addrが異なります。

4

1 に答える 1

0

私も同じように直面しましたが、それは関数が静的バッファーを使用しているためです。詳細については、inet_ntoaの問題を参照してください(3番目の投稿を参照してください)。

于 2011-06-24T14:49:19.203 に答える