void CListenSocket::OnAccept(int nErrorCode) 
{
CServerSocket* newServerSocket;
newServerSocket = new CServerSocket;
if(Accept(*newServerSocket))
{
//处理代码!
}
CAsyncSocket::OnAccept(nErrorCode);
}
************************************************
void CListenSocket::OnAccept(int nErrorCode) 
{
CServerSocket newServerSocket;

if(Accept(newServerSocket))
{
//处理代码!
}
CAsyncSocket::OnAccept(nErrorCode);
为什么按照上面的就可以正常运行!
按照下面的程序,客户端就无法连接阿!一连接及自动断开!

解决方案 »

  1.   

    CServerSocket newServerSocket;
    是在函数内申明的 
    那么在这个函数执行完后
    它的生命期就到了
    就没有了你改成
    static CServerSocket newServerSocket;
      

  2.   

    我试试!
    不过CServerSocket* newServerSocket;也在函数内部声明阿!~
    这个就没有生命期吗???
      

  3.   

    newServerSocket = new CServerSocket;
    这是new出来的对象啊,属于全局对象,你需要保存这个对象指针,
    我觉得你应该好好看看 变量的生存期及 C语言中的指针!