gpt4 book ai didi

c - 我在 UDP 套接字上设置了 SO_RCVLOWAT(接收低水位线)选项,但它不起作用

转载 作者:行者123 更新时间:2023-11-30 15:55:09 24 4
gpt4 key购买 nike

我正在使用 C 网络编程在 UDP 套接字上设置套接字选项 SO_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;
}

sd:有效的文件描述符

然后我使用recvfrom:

c = recvfrom(sd, databuf,  datalen, 0, (struct sockaddr_in *)&localSock, &addrlen);

最佳答案

它不应该在 UDP 中产生这种效果。 recvfrom() 一次接收一个数据报。如果您想一次接收多个数据,请使用 recvmsg()

关于c - 我在 UDP 套接字上设置了 SO_RCVLOWAT(接收低水位线)选项,但它不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12479147/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com