我用AcceptEx发送一个接受客户端连接的请求,当它接收到一个连接后,怎么样让它继续接收客户端连接它第二个参数的那个套接字要重创建吗?

解决方案 »

  1.   

    循环AcceptEx客户端的connect请求不就得了BOOL AcceptEx(
      __in   SOCKET sListenSocket,
      __in   SOCKET sAcceptSocket,
      __in   PVOID lpOutputBuffer,
      __in   DWORD dwReceiveDataLength,
      __in   DWORD dwLocalAddressLength,
      __in   DWORD dwRemoteAddressLength,
      __out  LPDWORD lpdwBytesReceived,
      __in   LPOVERLAPPED lpOverlapped
    );sAcceptSocket 
    A descriptor identifying a socket on which to accept an incoming connection. This socket must not be bound or connected.
      

  2.   

    while(TRUE)
    {
    BOOL bRet = AcceptEx(sListen,sClient,
    szOutputBuf,
    1024-((sizeof(SOCKADDR_IN)+16)*2),
    sizeof(SOCKADDR_IN)+16,
    sizeof(SOCKADDR_IN)+16,
    &dwByte,
    &overlapped);
    if(bRet == FALSE)
    {
    if(ERROR_IO_PENDING != WSAGetLastError())
    cout<<"监听出错"<<WSAGetLastError()<<endl;
    } int nRet = WSAWaitForMultipleEvents(1,&overlapped.hEvent,TRUE,1000,FALSE);
    if (nRet == WSA_WAIT_TIMEOUT)
    {
    cout<<"超时"<<endl;
    continue;
    }
    if (nRet != WSA_WAIT_FAILED)
    {
    WSAResetEvent(overlapped.hEvent);
    cout<<"接收到新连接"<<endl;
    }
    }这样也不行啊
      

  3.   

    好了,
    sClient创建这个套接字放AcceptEx前面就行