4
好吧..我使用epoll + multithread的典型模型来处理大量的套接字,也就是说,我有一个线程叫做epollWorkThread,它使用epoll_wait来处理I/O插座。虽然有EPOLLIN事件,recv()将完成这项工作,并且我使用非锁定模式来允许立即返回。而recv()确实是在一段时间(true)循环中。 在初始时间(可能是几个小时或者几分钟,或者如果我很幸运的话),一切都很好,我可以收到信息。但过了一段时间,recv()坚持返回-1,errno = 107(ENOTCONN)。传输的另一端用AS3编写,确保插座已连接。所以我对recv()的行为感到困惑。预先感谢您的意见,并表示感谢!recv()与errno = 107 :(运输端点连接)
没有答案,因为我不知道发生了什么,但尝试使用网络监视器来获取更多信息。我使用tcpdump或wireshark,任何更方便。不要忘记检查你的代码,看看腐败是否可能导致这个问题(valgrind)。 – stefaanv 2010-01-25 11:59:57
感谢您的信息。我尝试了tcpdump,但未能知道如何捕获数据包。我试过“tcpdump -i eth0'port myportnum'”但它不会捕获任何东西... – iBacchus 2010-01-26 07:12:08
你确定关于eth0吗?检查“ip地址”。你有没有尝试过它作为根?也许你没有正确的许可。 参数没问题,虽然我也加了-s0和-wtrace.cap,所以我可以用wireshark查看它。 – stefaanv 2010-01-26 12:14:42