- 论坛徽章:
- 0
|
select函数部分代码如下:
while (1) {
FD_ZERO(&readfds);
FD_SET(pingsock, &readfds);
maxfdp = pingsock + 1;
timeout.tv_sec = PINGINTERVAL; /*2s的阻塞时延 */
timeout.tv_usec = 0;
/* 保护select不受其他线程的信号干扰 */
ret = select(maxfdp, &readfds, NULL, NULL, &timeout);
if (ret <= 0) {
switch (ret) {
case 0:
DEBUG_PRINT("ping [%s] timeout, [%d] packets transmitted!\n", ping_s->pingip.ss_padding,
ntransmitted);
break;
case -1:
DEBUG_PRINT("select error!\n");
break;
default:
DEBUG_PRINT("select: error unknow!\n");
break;
}
FD_CLR(pingsock, &readfds);
}
程序跑起来之后,一直在打印ping超时,而用wireshark抓包却能抓到发出去的和返回的icmp报文。
请教各位,这是什么情况。哎,解决问题的一点头绪都没有啊。 |
|