C ネットワーク プログラミングを使用SO_RCVLOWAT
して、UDP ソケットのソケット オプションを設定しています。の戻り値の通り成功しましたgetsockopt()
。問題: ゼロより大きいデータ サイズを受信できます。
例: クライアント側でソケット オプション SO_RCVLOWAT 値を 1024 バイトに設定し、サーバーがクライアントに 256 バイトを送信しました。256 バイトを受信できますが、受信最低水準点が 1024 バイトであるため、実際にはこのメッセージを受信するべきではありません。
関連コード:
rc = setsockopt(sd, SOL_SOCKET, SO_RCVLOWAT, (char *)&recvlowat, sizeof(recvlowat));
if(rc < 0){
VL_MISC_ERR(("Setting SO_RCVLOWAT option error, %s",strerror(errno)));
return -1;
}
sd
: 有効なファイル記述子
それから私は使用しますrecvfrom
:
c = recvfrom(sd, databuf, datalen, 0, (struct sockaddr_in *)&localSock, &addrlen);