我用CSocket类编了一个客户/服务器的软件,客户端用如下方式与服务器端建立连接 pSocket=new CTcpSocket(this);
if(!pSocket->Create()){
pSocket->Close();
delete pSocket;
pSocketRedirector=NULL;
return 1;
}
else if(!pSocket->Connect(strIpAddr,port)){
pSocket->Close();
delete pSocket;
pSocket=NULL;
return 2;
}
连接通讯正常,但是当服务器端先关闭连接时,客户端再掉用如下方法关闭连接既出现内存错误. if(pSocket!=NULL)
{
pSocket->Close();
delete pSocket;
pSocket=NULL;
}请问如何判断服务器端和客户端已经关闭,连接所处的状态.好象没有相应的成员函数.多谢!!!!!!!!!!!

解决方案 »

  1.   

    在CSocket中有个OnClose虚函数,重载就行了
      

  2.   

    CSocket类中的四个函数OnReceive OnSend OnAccept OnClose重载比较好
    或是重载OnMessagePending比如, 如果服务器关闭连接, 那么连接套接字会收到一个windows消息, 此时OnClose将调用
      

  3.   

    重载OnClose()函数,在对方socket关闭时会调用这个函数,在这个函数里将socket关闭。
      

  4.   

    如果网络故障会收到消息调用ONCLOSE()吗
      

  5.   

    如果网络故障会收到消息调用ONCLOSE()吗????
      

  6.   

    就是网络故障,对方SOCKET并没有关闭,但是两者连接已经断开了,这个时候可以有消息通知吗