我在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);
}