如题 ,在一个断开后服务器端回检测到断开的事哪一个Socket 连接,这个都正确,然而最莫名其妙的是其他的连接,这个时候 给Server端发送的数据无法收到,接下来 就是检测到其它的Client 异常断开提示,不知道为什么???

解决方案 »

  1.   

    问题应该出在“断开的是哪一个Socket 连接”之后你的处理上,可能你把其他client的连接都关了。
      

  2.   

    每当有断开信号传入时 ,首先它会找到对应的线程句柄,和socket句柄 然后分别关闭他们。其他的没有操作,可还是不行。??
      

  3.   

    收到一个断开信号 调用他来关闭 socket
    bool CSocketComm::ShutdownConnection(SOCKET sock)
    {
    shutdown(sock, SD_BOTH);
    return ( 0 == closesocket( sock ));
    }
    这个关闭是不是要 强迫所有的传输和接收都失败阿!!
      

  4.   

    试验表明:
    我在结束时 不关闭socket 即不掉用shutdown(sock, SD_BOTH);和closesocket( sock )
    只关闭对应的线程。这样就不会导致 其它连接的异常断开,这样一来 如果始终都不关闭Socket 的话,会出现什么样的后果。(假设一个客户端,要经常性的断开 并且从新建立连接)
      

  5.   

    我也曾经遇到过相似问题,在csdn这里贴了个把月了,还是没有解决问题。或许大家也帮我看看,http://community.csdn.net/Expert/topic/4685/4685503.xml?temp=.6852075
    代码都贴上去了,利用重叠io模型,已经把功能简化到只是一个echo server了,利用telnet就可以做客户端测试,麻烦各位大虾走过路过别错过啊。
      

  6.   

    我想 请教 OnAccept()开线程 楼主是 怎么 开的 
    多线程 就是 不 明白
    代码 可以看看 吗》 关键的OnAcept
      

  7.   

    msn: [email protected] 
    谢谢