遇到一个奇怪的现象,我用socket开了一端口,clientSocket连接上来后,如果长期处于不活动(没数据收发),此clientSocket就down掉了,但并没有触发Onclose()事件 
    请问各位大侠,我如何知道该clientsocket不可用?谢谢

解决方案 »

  1.   

    just check socket whether valid.
      

  2.   

    大哥,如何check 嘛,拜托
      

  3.   

    根据TCP的实现,是会有这样的现象,在SETSOCIOPT中有项设置KEEPALIVE参数的选项,如果设置了KEEPALIVE在WINDOWS 中连接2个小时(默认值)没有数据收发则会DOWN,
      

  4.   

    我用
    DWORD time_out=1000;
    if(setsockopt(theApp.GoldenSocket->m_hSocket, SOL_SOCKET, SO_KEEPALIVE, (char*)&time_out, sizeof(time_out))== SOCKET_ERROR)//看有没有反映
      {
     theApp.GoldenSocket->Close();
    delete theApp.GoldenSocket;
    theApp.GoldenSocket=NULL;
    }
    试试看有没有效果先