WindowsのUDPでsendtoできる最大サイズ
探してみてもsendtoの最大サイズがわからなかったので調べてみた。
for(int i=0;i<MAX;i++){ int len = i; int r; r = sendto(Sock,buf,len,0,(SOCKADDR *)&addr,(int)sizeof(addr)); }
として、MAXを70000くらいにして実行(感覚的にはunsigned shortで落ちる感じなのでこのくらい)
結果的に、len = 65508でWSAEMSGSIZEのエラーが出ることを確認した。MSDNによれば、
WSAEMSGSIZE ソケットが SOCK_DGRAM 型で、Windows ソケットの実装でサポートされている最大長よりもデータグラムが長すぎます。
とのことだが、ソケットの実装でサポートしている最大長の記載がない…。ひどい…。