我用CSocket写的Client/Server程序, Server建立一个侦听socket, 每个Client socket连接到Server时,在Server端会采用new的方式创建一个Client Socket与Client保持通讯.
当某一个Client异常断开后,在Server端我用delete方法删除该Client Socket是不成功的,会抛出异常, 并且该Client Socket并未delete.各位有什么好的方法吗?

解决方案 »

  1.   

    pelease help me, appreciate for your helps!
      

  2.   

    当有一个Client连接至Server, Server的listen socket在OnAccept函数中:
    CListenSocket::OnAccept(){ CClientSocket* pSocket = new CClientSocket(this); if (m_pSocket->Accept(*pSocket))
    {
      ...
    }
    }当Client的连接断开后(我这里强制结束Client程序进程), 那么Server端需要删除与之对应的ClientSocket(上面new生成的), 这样就会抛出异常,为什么呢?怎么解决?
      

  3.   

    你只说异常,又没说什么异常,而且不见你的所谓删除代码,难道要别人猜吗?
    那我先猜一下,不要直接delete,或许应该先Close。没用过CSocket,不知是不是这样的。
      

  4.   

    try
    {
     pSocket->close()
     delete psocket;
    }
    catch(...)
    {
      .........
    }