很快返回错误信息是不可能的。
这就好比你去找一个人,如果他的同事告诉你他请假了,那么你就可以回去了,但是如果一个人都没有,你就不得不四处寻找了。

解决方案 »

  1.   

    这问题有没有解决的方法呀,不会这么难吧?》
      

  2.   

    请高手继续回答呀,我等着用呢,可以再加分得!!!!!!!
      

  3.   

    请高手继续回答呀,我等着用呢,可以再加分得!!!!!!!
      

  4.   

    请高手继续回答呀,我等着用呢,可以再加分得!!!!!!!
      

  5.   

    请高手继续回答呀,我等着用呢,可以再加分得!!!!!!!
      

  6.   

    请高手继续回答呀,我等着用呢,可以再加分得!!!!!!!
      

  7.   

    请高手继续回答呀,我等着用呢,可以再加分得!!!!!!!
      

  8.   

    请高手继续回答呀,我等着用呢,可以再加分得!!!!!!!
      

  9.   

    使用计时器,自己判断!!!!
      

  10.   

    If you use MFC, the following codes can help you(from codeguru):
    // .h
    #include "stdafx.h"//////////////////////////////////////////////////////////////////////////////////
    // //
    // Implementation of the CSock class //
    // //
    //////////////////////////////////////////////////////////////////////////////////
    // //
    // 1999 Presented by Seung Kyung, Lee. //
    // E-Mail : [email protected] //
    // //
    // Designed using Microsoft VisualC++ 6.0 and MFC //
    // Tested on WindowsNT 4.0  Server //
    // //
    //////////////////////////////////////////////////////////////////////////////////class CSock : public CSocket
    {
    virtual BOOL ConnectHelper(const SOCKADDR* lpSockAddr, int nSockAddrLen);
    virtual void OnClose( int nErrorCode );
    public:
    CSock();
    BOOL m_Kill;
    };
    // .cpp
    #include "stdafx.h"
    #include "Sock.h"/// CSocket modify - timeout module.
    CSock::CSock()

    m_Kill = TRUE;
    m_nTimeOut = 1;
    struct linger Ling;
    Ling.l_onoff = 1;
    Ling.l_linger = 2;
    SetSockOpt(SO_LINGER, &Ling, sizeof(Ling));
    }BOOL CSock::ConnectHelper(const SOCKADDR* lpSockAddr, int nSockAddrLen)
    {
    if (m_pbBlocking != NULL)
    {
    WSASetLastError(WSAEINPROGRESS);
    return  FALSE;
    } m_nConnectError = -1; if (!CAsyncSocket::ConnectHelper(lpSockAddr, nSockAddrLen))
    {
    if (GetLastError() == WSAEWOULDBLOCK)
    {
    // Insert....
    CTime curt, st;
    CTimeSpan span(0, 0, 0, m_nTimeOut); st = CTime().GetCurrentTime();
    //.......
    while (PumpMessages(FD_CONNECT))
    {
    if (m_nConnectError != -1)
    {
    WSASetLastError(m_nConnectError);
    return (m_nConnectError == 0);
    }
    // Insert....
    curt = CTime().GetCurrentTime();
    if(curt > (st+span))
    return FALSE;
    //..............
    }
    }
    return FALSE;
    }
    m_Kill = FALSE;
    return TRUE;
    }void CSock::OnClose(int nErrorCode)
    {
    m_Kill = TRUE;
    }
    If you use SDK, you can track this code in MFC source code.Wish this can help you.