【发布时间】:2016-10-30 12:24:01
【问题描述】:
下面示例代码中的“recvfrom()”等待接收到 UDP 数据包。
但我需要检查 UDP 数据包是否可用。 如果没有收到数据包,则继续其他任务。 如果收到数据包,则接收数据包并解析。 如何在 Linux c 程序中执行此操作?请帮忙!
for (;;)
{
printf("waiting on port %d\n", SERVICE_PORT);
recvlen = recvfrom(fd, buf, BUFSIZE, 0, (struct sockaddr *)&remaddr, &addrlen);
printf("received %d bytes\n", recvlen);
if (recvlen > 0) {
buf[recvlen] = 0;
printf("received message: \"%s\"\n", buf);
}
}
【问题讨论】:
-
您可以使用 (
select)[linux.die.net/man/2/select] 函数来知道某个内容已准备好在套接字上读取。 -
是的,选择有效。谢谢。
标签: c linux sockets server udp