请问在VC里面用SOCKET套接字编写网络程序时,如果服务器端已经进入侦听状态,但是一直都没有客户端连接,服务器端应该如何退出侦听状态(要求:这其中不用线程)?
客户端已经连接成功,如果网线断掉,服务器端怎么知道这一事件?用什么函数的返回值可以得到吗?

解决方案 »

  1.   

    服务器端应该如何退出侦听状态(要求:这其中不用线程)?
    用非阻塞socket
    客户端已经连接成功,如果网线断掉,服务器端怎么知道这一事件?用什么函数的返回值可以得到吗?
    自己定时发包查询,如client没ack就证明其消失了
    没有专门函数
      

  2.   

    非阻塞Socket怎么用啊?有代码参考吗?
    如果是自己定义包,能够不用线程实现吗?
      

  3.   

    DWORD lpArgument = 0;
    //设置非阻塞模式
    if((0 != ioctlsocket (m_sockSrvr, FIONBIO, &lpArgument))) {
    ::shutdown(m_sockSrvr, 2);
    ::closesocket(m_sockSrvr);
    return FALSE;
    }