プロが教えるわが家の防犯対策術!

UDPソケット通信をする際、受信データサイズとして考慮するべきサイズはアプリサイズとUDPヘッダー(8バイト)としてソケットオプションで受信バッファサイズを増加させたのですが、予想より受信できるパケット数が少ないです。

例)
1パケットのアプリサイズを10バイトしUDPヘッダーも考慮して実際1パケットあたり18バイトとして、最大5パケット受け取れるようにソケットオプションで
アプリサイズ(10バイト)× UDPヘッダー(8バイト)×パケット数(5)
上記のように設定したのですが、実際5パケットも受信できませんでした。

上記のほかにIPヘッダーなども考慮しなければならないのでしょうか?

開発環境:solaris8 C言語

A 回答 (1件)

こんにちは。



18バイトですか。たしか、Lengthは、オクテット単位でしたよね???

理論的に間違っていないなら、理論と実際の設定があってないのではないかと思うのですが・・・。

流れているパケットをアナライズしてみた方がいいと思います。実は、内部で擬似ヘッタがくっついて、アプリデータが入りきっていなかったりとかしません??
その際、Length値に注目してください。この値はヘッターを含む値です。
その設定がうまく行っているか。
設定の段階でここに10バイトが入ってしまうと、ヘッター分抜いて、2バイトしか入りませんし。

ソース内でどうしているかもわからないので、予測の範囲内ですが。
参考になれば。
でわ。
    • good
    • 0
この回答へのお礼

ご回答誠にありがとうございます。

データをスニファーでキャプチャーした結果
UDPのlengthはアプリ(10)+UDPヘッダー(8)
計18バイトになっておりました。

ソースでは送信データサイズ(引数)を10としています。
関数はsendtoを使用しています。

個人的な見解なのですが、仮に内部で擬似ヘッタがくっついて、アプリデータが入りきっていないとした場合でも実際のデータ長は変わりないので、受信出来るパケット数は理論値通りだと推測されるのですが・・・

お礼日時:2001/12/22 22:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!