5

を使用して既存の Tap デバイスに接続しました

fd = open(...)

今、私はそれをパケットごとに読みたいと思っています。私が使用する場合

read(fd,buffer,sizeof(buffer));

正確に 1 パケットを読み取ることはありません。

正確に 1 パケットを読み取るにはどうすればよいですか? パケットの長さを示す何らかの種類のヘッダーがありますか、または最悪の場合、パケットを解析して自分で長さを計算する必要がありますか?

4

3 に答える 3

4

read()タップデバイスからバイトを読み取る方法が間違っていました。私が使用read()すると、正確に1フレームを読み取ることがわかります(または、nがフレームサイズよりも小さい場合はnバイト)

于 2013-09-06T08:34:53.510 に答える