我有一段代码将一个实现ping命令的代码作为更大代码的一部分。一小时后PING超时
下面是这种情况:
- 润平用 “-c” 或 “-t” 选项。
- 随后通过Ctrl + C终止
- 大约一个小时后,我发现ping失败。
这里是 “插座” 呼叫: 袜子=插座(IP_AF_INET,IP_SOCK_RAW,IP_IPPROTO_ICMP);
在调用recvfrom之前,套接字被设置为1秒的超时值。 当ping失败时,我观察到errno被设置为EAGAIN。
我尝试了一些测试,我相信它是由一个按Ctrl + C时没有被关闭的套接字造成的。
我的问题是:如果我没有像上面提到的场景那样关闭套接字,我可以面对什么问题?
管理运行一些更多的测试,似乎在一个小时后ping失败的初始诊断是不正确的。如果我打开了10个ICMP套接字,现在可以ping通了。当我有10个ICMP套接字打开时,同时ping errno EAGAIN失败。 现在:是否有限制没有。可以同时打开的ICMP套接字? 另外:有什么办法可以回收他们? – Zshn 2012-03-23 03:40:25