错误号为10035,意思为“无法立即完成一个非阻挡性套接字操作“,也就是我在调用Connect这个函数的时候,就立即返回了,请问我应该怎么做才能调用该函数成功连接,也就是说该函数不能立刻返回否则就连接出错,请问各位高人有是么高的方法呢

解决方案 »

  1.   

    兄弟们,这个问题是不是太简单了,可是我不会,还望大侠指点迷经,谢谢,这里我该这么做呀,连接函数
    BOOL CServerSocket::ConnectToServer(const char *serverIp,int nPort)
    {
        if(serverIp==NULL)
    return FALSE;

        Close();    if(!Create())
    return FALSE;    if(!Connect(serverIp,nPort))
        {
    int nErrCode = GetLastError(); CString strErrMsg;
    strErrMsg.Format("发生网络错误:%d", nErrCode);
    AfxMessageBox(strErrMsg);
    return FALSE;
        }
        return TRUE;
    }
      

  2.   

    你可以设置其工作在阻塞方式下 用IOCTRL()
    或通过事件同步WAITFORSINGLEOBJECT
      

  3.   

    CAsyncSocket及其派生类默认工作为异步方式,你得到的Socket错误,严格上不算是错误,只能算的上是Socket给你的提示。那么,你需要在CYourSocket::OnConnect( int errCode )这个事件处理函数里来检查是否连接成功。如果没有连接成功,则errCode会返回错误码。
    详细的情况,请参见我写的一篇文章:
    http://www.csdn.net/Develop/read_article.asp?id=15990