gpt4 book ai didi

c - select() 仅返回正值一次

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

当某些数据包按预期到达 UDP 端口时,选择函数将返回 +ve 值。但这种情况只发生一次。从 UDP 端口第二次收到数据包开始,该功能不再对此做出响应。但是在收到 UDP 数据包后的第一次,如果我在同一个套接字上执行 sendto() ,则 select 函数会响应。这种行为的原因是什么?

代码:

while (true)
{
IP_FD_ZERO (&readFD);
IP_FD_SET (ipSock, &readFD);

if (select( &readFD, NULL, NULL, 2000 ) > 0)
{
if (IP_FD_ISSET( ipSock, &readFD )) //activity on UDP socket
{
addrlen = sizeof(SocketAddrIn_t);
noOfbytes = recvfrom( ipSock,
(char*)ipRxBuffer,
sizeof(ipRxBuffer),
0,
(SocketAddr_t *)&from,
(int*)&addrlen );
}
}
}

最佳答案

select( &readFD, NULL, NULL, 2000 )

嗡嗡声。 select() 的第四个参数是一个 struct timeval *,而不是整数。请参阅man page .

关于c - select() 仅返回正值一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27267559/

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