rt
难道是winsock 2.0的问题?

解决方案 »

  1.   

    是不是开了一个线程去联DNS?
    猜想中
      

  2.   

    我的代码如下:
    UINT CHttpClient::InitServerInfo(void)
    {
        //set HTTP Server's info
    unsigned long tmpIAddr=0;
    // 因为不知道用户输入的主机地址是IP形式的还是名称形式的,所以只能试着去解析
    // 试着通过名称方式查找主机
    struct hostent * heServHostInfo=NULL; heServHostInfo=gethostbyname(m_bUseProxy?m_csServer:m_urlInfo.m_csHost); if (heServHostInfo==NULL)
    {
    // 试着以IP形式查找主机
    tmpIAddr=inet_addr(m_bUseProxy?m_csServer:m_urlInfo.m_csHost);
    if (tmpIAddr==INADDR_NONE)
    return HTTPCLIENT_ERR_BADHOST;
    // 以IP形式查找主机成功
    sinHTTPServer.sin_addr.S_un.S_addr=tmpIAddr;
    }
    else
    {
    // 以名称方式查找主机成功
    sinHTTPServer.sin_addr.S_un.S_addr=*((long *)(heServHostInfo->h_addr));
    }    sinHTTPServer.sin_family=AF_INET;
    sinHTTPServer.sin_port=htons(m_bUseProxy?m_nServerPort:m_urlInfo.m_nPort); return HTTPCLIENT_ERR_SUCCESS;
    }事实上,我在程序中将gethostbyname()单独写到了一个Dialog的OnInitDialog()中执行,但结果也是多出一个线程。
    我试验时的代码是
    struct hostent * heServHostInfo=NULL;
    heServHostInfo=gethostbyname("www.codetools.com");