本人今天编写了一个客户端,编译、链接时均未发现问题,但在运行后与服务器端建立连接时就会发生异常错误,并且该错误是无法用错误陷阱捕获的,请各位高手帮忙改改,本人将不胜感激!
核心源代码如下:
void CExcuseDlg::OnLink() 
{
// TODO: Add your control notification handler code here
BYTE a1,a2,a3,a4;
m_ipadrres.GetAddress(a1,a2,a3,a4);
m_ServerAdr.Format("%d.%d.%d.%d",a1,a2,a3,a4);

m_clientSocket.ShutDown(2);
m_clientSocket.Rest();
//建立计时器,每1秒尝试连接一次,直到连上或TryCount>10
SetTimer(1,500,NULL);
TryCount=0;
}
void CExcuseDlg::OnTimer(UINT nIDEvent) 
{
// TODO: Add your message handler code here and/or call default
switch(nIDEvent){
case 1:
if (m_clientSocket.m_hSocket == INVALID_SOCKET)
{
BOOL bFlag;//=m_clientSocket.Create(0,SOCK_STREAM,FD_CONNECT);
if(!bFlag)
{
MessageBox("网络请求失败 !");
m_clientSocket.Close();
KillTimer(1);
KillTimer(2);
     return;
}
}
m_clientSocket.Connect(m_ServerAdr,m_port);

TryCount++;
if (TryCount >=10 || m_clientSocket.IsConnect())
{
KillTimer(1);
KillTimer(2);
if (TryCount >=10) AfxMessageBox("Connect Failed!");
    return;
}
break;}

解决方案 »

  1.   

    别人是没办法调的,没有服务端程序,而且楼主给的程序也是片断。在debug下不能跟踪到异常发生的地方?
      

  2.   

    应该是断言错误
    可能是你的socket句柄为空所致,调试状态,然后单步执行找原因
      

  3.   

    程序运行到语句“m_clientSocket.Connect(m_ServerAdr,m_port);”时发生异常错误,但是服务器端显示与客户端已建立连接,不知道是什么原因,请高手们再帮忙看看,谢谢!
      

  4.   

    在 m_clientSocket.ShutDown(2);之前应该执行m_clientSocket.Create();要不然必死!
      

  5.   

    看看我的BLOG:
    http://blog.csdn.net/wang921718/archive/2007/09/04/1772396.aspx
    希望对你有所帮助