使用CAsyncSocket的时候,客户端连接问题
使用CAsyncSocket的时候
客户端使用定时器来连接服务端
在重载函数OnConnect里通过nErrorCode是否等于零来判断是否连接
但是在有些电脑上没有问题
在有些电脑上有问题
问题表现为nErrorCode=0,没有错误
但实际上没有连接上
服务器端也没有 Accept到,客户端也收发不了信息
这是什么原因,难道是CAsyncSocket的BUG?
void CCSockClientDlg::OnTimer(UINT nIDEvent)
{
if (m_clientSocket.m_hSocket==INVALID_SOCKET)
{
BOOL bFlag=m_clientSocket.Create(0,SOCK_STREAM,FD_CONNECT);
if(!bFlag)
{
AfxMessageBox("Socket Error!");
m_clientSocket.Close();
PostQuitMessage(0);
return;
}
}
m_clientSocket.Connect(m_szServerAdr,m_szPort);
TryCount++;
if (TryCount >=10 || m_clientSocket.m_bConnected)
{
KillTimer(1);
if (TryCount >=10)&&(m_clientSocket.m_bConnected==FALSE)
{
AfxMessageBox("Connect Failed!");
return;
}
AfxMessageBox("connecting");
}
CDialog::OnTimer(nIDEvent);
}
void MySock::OnConnect(int nErrorCode)
{
if (nErrorCode==0)
{
m_bConnected=TRUE;
CCSockClientApp* pApp=(CCSockClientApp*)AfxGetApp();
CCSockClientDlg* pDlg=(CCSockClientDlg*)pApp- >m_pMainWnd;
memcpy(m_szBuffer,"Connected to ",13);
strncat(m_szBuffer,pDlg- >m_szServerAdr,
sizeof(pDlg- >m_szServerAdr));
pDlg- >m_MSGS.InsertString(0,m_szBuffer);
AsyncSelect(FD_READ); ////提请一个“读”的网络事件,准备接收
}
CAsyncSocket::OnConnect(nErrorCode);
}