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 ソケットの実装でサポートされている最大長よりもデータグラムが長すぎます。

とのことだが、ソケットの実装でサポートしている最大長の記載がない…。ひどい…。