先看一段代码:
STDIMP CTcpSock::Connect(const ENDPOINT& ep)
{
HRESULT hr = PrepareConnect();
if (FAILED(hr))
return hr; SetType(connectiontype_client);
SOCKADDR_IN sa;
memset(&sa,0,sizeof(sa));
sa.sin_family = AF_INET;
sa.sin_addr.s_addr = htonl(ep.ip);
sa.sin_port = htons(ep.port);
if (Sock::Connect((SOCKADDR*)&sa, sizeof(sa)))
{
//... 超时处理 {{
sockaddr_in sa;
int cb = sizeof(sa);
getsockname(m_s, (sockaddr*)&sa, &cb);
m_EP.ip = ntohl(sa.sin_addr.s_addr);
m_EP.port = ntohs(sa.sin_port);
}}
m_PeerEP.ip = ep.ip;
m_PeerEP.port = ep.port; return S_OK;
}
else
return E_FAIL;
}它在那边超时处理了?“//... 超时处理”

解决方案 »

  1.   

    Sock::Connect()这个返回TRUE做超时处理?下面还连续几个{{的,什么垃圾代码来的?
      

  2.   

    这是 CCIPTV的源代码 不垃圾,我看了半天,好痛苦
      

  3.   

    关键是 { 
    //... 超时处理 {{ 
    sockaddr_in sa; 
    int cb = sizeof(sa); 
    getsockname(m_s, (sockaddr*)&sa, &cb); 
    m_EP.ip = ntohl(sa.sin_addr.s_addr); 
    m_EP.port = ntohs(sa.sin_port); 
    }} 
    m_PeerEP.ip = ep.ip; 
    m_PeerEP.port = ep.port; return S_OK; 
    } 嵌在这里的 不是connect