我写了一些代码,它应该遍历一个套接字列表,向它们发送数据包,如果得到答案,则将其发送回特定的套接字。
这是我的代码片段:
while ((curr_fd = conn_get_node()) > 0) {
send(curr_fd, fifo_packet.packet, MSGLENGTH, 0);
FD_ZERO(&rfds);
FD_SET(curr_fd, &rfds);
got_answer = select(curr_fd + 1, &rfds, NULL, NULL,
&tv);
if (got_answer == -1) {
perror("select()\n");
} else if (got_answer == 1) {
get_packet(curr_fd, &answer);
send(fifo_packet.from_fd, &answer, MSGLENGTH, 0);
} else {
printf("no data within 100us\n");
continue;
}
现在它显示对于发送的前两个或三个数据包,select 总是会说它没有收到任何东西(got_answer = 0),尽管我可以看到数据已经通过嗅探器到达。在大约第三个数据包之后它开始工作(got_answer = 1)。
有人知道我做错了什么吗?
我感谢您的帮助。