Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我在UDP套接字上设置了SO#u RCVLOWAT(接收低水位线)选项,但它没有';行不通_C_Sockets - Fatal编程技术网

我在UDP套接字上设置了SO#u RCVLOWAT(接收低水位线)选项,但它没有';行不通

我在UDP套接字上设置了SO#u RCVLOWAT(接收低水位线)选项,但它没有';行不通,c,sockets,C,Sockets,我正在使用C网络编程在UDP套接字上设置套接字选项SO\u RCVLOWAT。我成功了,返回值为getsockopt()。问题是:我仍然可以接收任何大于零的数据 示例:我在客户端将套接字选项SO_RCVLOWAT的值设置为1024字节,服务器向客户端发送256字节。它可以接收256字节,但实际上不应该接收此消息,因为接收低水位线是1024字节 相关代码: rc = setsockopt(sd, SOL_SOCKET, SO_RCVLOWAT, (char *)&recvlowat, si

我正在使用C网络编程在UDP套接字上设置套接字选项
SO\u RCVLOWAT
。我成功了,返回值为
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;
        }

在UDP中不应该有这种效果
recvfrom()
一次接收一个数据报,周期为。如果您希望一次接收多个数据包,请使用
recvmsg()

不确定此选项是否适用于数据报套接字。@user1680544为什么?我已经给出的答案有问题吗?我尝试了recvfrom()和recv(),但它们都没有工作!!我尝试了这些简单的流式客户端和服务器套接字,但@user1680544也不起作用。我建议您阅读我的答案,而不仅仅是问我更多的问题。你丝毫没有表现出这样做的样子。我已经告诉过你为什么你现在调用的那些函数不能满足你的需要。所以打电话给他们已经是浪费时间了。我还告诉过你要调用什么函数才能得到你想要的。这两个都不是。谢谢,我在TCP上试用过,并成功运行,顺便说一句,我是automation network programming tester,我的测试角色是检查该选项是否与加载特定库的recvfrom一起正常工作
c = recvfrom(sd, databuf,  datalen, 0, (struct sockaddr_in *)&localSock, &addrlen);