MTUを越えた巨大なUDPパケットの受信

この場合、パケットの受信は次のようなプログラミングになるはず。(端折ってます

RecvBufferLen = recvfrom(Socket_Handle, RecvBuffer, _ETH_MAX_LEN, 0, (struct sockaddr *)&Addr, &lngAPIReVal);

ここで、通常は、_ETH_MAX_LENの値はEthernetのMTUである1500となっているはずです。
この場合、1500バイトを超えるパケットを受信することはできません。
したがって、_ETH_MAX_LENの値を大きくすることでMTUを越えた巨大なUDPパケットの受信を行うことができます。

TCPはストリーム型だからなんにも考えないで何度も受け取ればいいからな〜〜UDPは意外とわかりにくいかも・・・


まあ、通常はMTUより余裕を持って2560くらいに設定しておくと吉かと。


送信の方は普通に同じように送りたい、データのサイズを指定すれば送ってくれます。

注:MTUを越えたサイズのパケットはフラグメントされるため、巨大なパケットは分割されます。
また、巨大なパケットはデータが失われる可能性が高いためあまり使用はお薦めしません。
なお、私はMTUぴったりなパケットをトンネリングするために巨大UDPパケットを利用しています。
・・・まあ、+50バイト程度って事で