1

GCDAsyncUdpSocket を使用して、マルチキャスト グループとの間でデータを送受信しています。GCDAsyncUdpSocket.m ファイルで、次の設定を見つけて、たとえば値を 32768 に変更しました。しかし、9216 バイトを超えるパケットはまだ受信できません。

max4ReceiveSize = 9216;
max6ReceiveSize = 9216;

別の設定はありますか?

編集: GCDAsyncUdpSocket クラスが setMaxReceiveIPv4BufferSize と呼ばれるこの値を設定するメソッドを提供していることを発見しました。それを試してみましたが、それでも約 9216 バイトでしか受信しませんでした。

4

1 に答える 1

2

設定が異なるため、使用しているオペレーティングシステムを正確に知ることが役立ちます。OS X 10.6では、次を確認してください。

# sysctl net.inet.udp.maxdgram
net.inet.udp.maxdgram: 9216

ただし、データパスの最大送信ユニット(MTU)は、パス内のデバイスでサポートされている最小値によって決定されることに注意する必要があります。つまり、1つのデバイスまたはソフトウェアルールだけが特定のサイズより大きいデータグラムの処理を拒否した場合、それがそのパスの制限になります。したがって、これに影響を与える多くのデバイスに多くの設定が存在する可能性があります。また、IPv4とIPv6のMTU規則は根本的に異なり、一部のルーターではマルチキャストとユニキャストの規則が異なることに注意してください。

一般に、IPv4が保証する最大IPパケットサイズがサポートされるため、合計576バイト(すべてのプロトコルヘッダーを含む)を超えるIPデータグラムが許可されると想定するのは安全ではありません。IPv6の場合、保証されるサイズは1280です。ほとんどのデバイスはより大きなパケットをサポートしますが、必須ではありません。

于 2012-02-03T15:20:55.437 に答える