如何在socket接收vc ++ mfc上设置超时

时间:2017-09-14 07:15:13

标签: c++ sockets visual-c++ mfc

我在MFC创建了一个服务器。客户端连接到服务器,服务器正在等待接收由客户端发送的数据。 我想要一个接收pSocket.Receive(cbuf,1)的超时期限。 这是我的代码:

 int i_userid; AfxSocketInit(); bool    bRun = true;    
 CWinThread *pCurrentThread; pCurrentThread = AfxGetThread();

 SOCKET   pCurrentHandle; CSocket pSocket; pCurrentHandle =hClinetHandle;


  pSocket.Attach(hClinetHandle);    

    LeaveCriticalSection(&m_socket_lock); CSocket t_socket; 

    CString  m_Ipadd=L""; UINT m_portno=0;              
    pSocket.GetPeerName(m_Ipadd,m_portno);

    st_Client* m_st_Client=new  st_Client();    

    //receive Use Id and Get UserPortfolio CString m_token=L"";

    CString New_data=L"";char cbuf[24]; 
    for(int i=0;i<24;i++) 
    cbuf[i] ='\0';      

    while(bRun) 
    {               
        if(pSocket.Receive(cbuf,1)>0) 
        {   
            New_data=cbuf;      
            if(wcscmp(New_data,L"\r")==0 ||wcscmp(New_data,L"|")==0)
            {           
               break;       
            }
            m_token=m_token+New_data;
        } 
        else
        {
          bRun=false; 
          break;
        }               
    }

其他一些CTimeout代码,但它没有在那里工作.........

void CServerSocket::OnAccept(int nErrorCode) 
{

    m_Client.m_hSocket = INVALID_SOCKET;
    AfxMessageBox("Client Request Connection");

    if(!SetTimeOut(10000))
    {
      ASSERT(FALSE);
     // Error Handling...for some reason, we could not setup
     // the timer.
    }

    if(!Accept(m_Client))
    {
        int nError = GetLastError();
        if(nError==WSAEINTR)
            AfxMessageBox("No Connections Arrived For 10 Seconds");
        else
            ; // Do other error processing.
    }

    CSocket::OnAccept(nErrorCode);
}

0 个答案:

没有答案