我现在在做一个局域网内的p2p资源共享软件,100M带宽,p2p全速下载基本可以稳定在10 - 11M之间,但是,现在出现一个诡异的问题,两台主机之间传输数据一段时间之后,会突然断开网络连接,两主机之间无法连接,ping不通,修复仍ping不通,但是,过了一段时间后,又自己能ping通,太诡异了,不知道什么情况?测试的时候已经出现过好几次了,内网主机之间是通过交换机连接的,哪位遇到过类似情况的,恳请指点一二。

解决方案 »

  1.   

    tcpview看看是不是有太多的socket处于CLOSE_WAIT状态。如果是的,则说明你的socket关闭不正常。
      

  2.   


    交换机有这个功能?诡异的是,过了一会儿,又能ping通,难道是,拦截后,一段时间内,交换机丢弃所有该主机的包?之后自动恢复。
    我试试楼下得tcpview,不过我用commview也觉得非常不错
      

  3.   


    情况补充:比如AB两台主机通信,A从B那里下载资源,下载一段时候后,会莫名断开连接,这个时候,从A端ping B,无法ping通,但是,从B端去ping A却是可以ping通的,而通了之后,这时候A又能ping 通B,这个问题非常诡异,不知道哪位有遇到过?
    ps:我用tcpview观察,B端只有一个连接是CLOSE_WAIT状态,正在复习TCP的状态迁移图,A端的没观察。
      

  4.   


    用了,确实发现了下载端存在很多socket处于CLOSE_WAIT状态,正好可以回过头来学习一下基础知识
      

  5.   

    下载端可能发生了这样的错误:There are no more endpoints available from the endpoint mapper.
      

  6.   

    我的程序也遇到了,我是先调用connect()函数连接成功,然后向服务端send一个message,但是没有接收到任何消息,也是客户端ping服务端ping不通,服务端ping客户端能ping通,过一会自己好了。
      

  7.   


    你的通信逻辑是否是服务器先关闭,然后客户端再关闭,我的是这个逻辑,然后导致客户端的socket都处于CLOSE_WAIT状态,你用tcpview看看,我觉得有可能是这个问题。并且我用commview抓包,竟然发现,服务器closesocket或者shutdown后,包里面没有FIN这个包,好奇怪