如果利用VB去验证一个代理服务器是否可用,并且可以返回响应的时间!大侠赐教,本人刚接触这方面的知识,小弟分不多,呵呵!希望大侠回帖

解决方案 »

  1.   

    将代理服务器作为一个web服务器对待,直接发送http请求,看看能否返回。
      

  2.   

    能说的具体点么,不要跟我说 用WEBBROWSER去发送,Winscok 可以发送,Winscok 我不知道如何设置成代理,或者有其他更好的方法吗?
      

  3.   

    代理协议有几种,比较常用的是 HTTP代理 和Sock4\Sock5,
    如果你想测试所有类型的代理,工程量就大点,单纯是HTTP代理,
    那就很简单,将IE的HTTP代理设置好,然后通过XMLHTTP随便访问
    一个Internet上的比较稳定的网页,成功就说明代理没问题。
      

  4.   

    用 XMLHTTP 容易出现假死吧!不想用这个
      

  5.   

    那是你对XMLHTTP还不了解,之所以有你所谓的假死,是因为你没有作超时处理。
    使用 MSXML2.ServerXMLHTTP 就能对超时进行控制。
    超时控制不好,即使你用WinSock也是会这样的
      

  6.   


    谢谢  SupermanKing 的指导,我去研究下
      

  7.   

    sock.RemoteHost = "www.baidu.com"
    sock.RemotePort = "80"
    sock.Connect
    While (sock.State <> sckConnected)
        DoEvents
    WendDim strCommand As String
    strCommand = "GET /index.php HTTP/1.0" & vbCrLf
    strCommand = strCommand & "Accept: */*" & vbCrLf
    strCommand = strCommand & "Referer: http://www.baidu.com/" & vbCrLf
    strCommand = strCommand & "Accept -Language: zh -cn" & vbCrLf
    strCommand = strCommand & "Content-Type: application/x-www-form-urlencoded" & vbCrLf
    strCommand = strCommand & "Accept-Encoding: gzip, deflate" & vbCrLf
    strCommand = strCommand & "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; User-agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; http://bsalsa.com) ; .NET CLR 2.0.50727)" & vbCrLf
    strCommand = strCommand & "Host: www.baidu.com" & vbCrLf
    strCommand = strCommand & "Connection: Keep-Alive" & vbCrLf
    sock.SendData strCommand
    为什么得不到源代码啊..Private Sub sock_DataArrival(ByVal bytesTotal As Long)
        Dim strData As String
        sock.GetData strData, vbString
        Text1.Text = Text1.Text & strData
    End Sub
      

  8.   


    MSXML2::IServerXMLHTTPRequestPtr XMLObject;
    MCString SendStr;
    MCString ReturnText;
    VARIANT ReturnBody;
    //SYSTEMTIME SystemTimeValue;
    long lResolve = 2 * 1000; //2秒 域名分析超时
    long lConnect = 2 * 1000; //2秒 连接站点超时
    long lSend = 3 * 1000; //3秒 发送数据时间超时
    long lReceive = 2 * 1000; //2秒 等待反馈时间超时
    XMLObject.CreateInstance("MSXML2.ServerXMLHTTP");
    XMLObject->setTimeouts(lResolve,lConnect,lSend,lReceive);
    SendStr = "http://";
    SendStr &= lpServerIP;
    SendStr &= "/ServerTime.asp";
    XMLObject->open(_bstr_t("GET"),_bstr_t(*SendStr),_variant_t("false"));
    XMLObject->setRequestHeader(_bstr_t("CONTENT-TYPE"),_bstr_t("application/x-www-form-urlencoded"));
    XMLObject->send();
    if(XMLObject->status!=200){
    NetworkState = FALSE;
    }else{
    NetworkState = TRUE;
    XMLObject->get_responseBody(&ReturnBody);
    ReturnText = BodyToChars(&ReturnBody);
    ReturnText.Erase();
    ...
    }
    VB里大同小异
      

  9.   

    SupermanKing 哥,如果我想在中间加一层代理如何去做呢?赐教,小弟是菜鸟.....
      

  10.   

    还是翻译成VB的给你把    Dim XMLObject As Object
        Dim SendStr As String
        Dim ReturnText As String
        Dim ReturnBody() As Byte
        Dim lResolve As Long
        Dim lConnect As Long
        Dim lSend As Long
        Dim lReceive As Long
        
        lResolve = 2 * 1000         '2秒 域名分析超时
        lConnect = 2 * 1000         '2秒 连接站点超时
        lSend = 3 * 1000            '3秒 发送数据时间超时
        lReceive = 2 * 1000         '2秒 等待反馈时间超时
        Set XMLObject = CreateObject("MSXML2.ServerXMLHTTP")
        XMLObject.setTimeouts lResolve, lConnect, lSend, lReceive
        SendStr = "http://" & lpServerIP & "/ServerTime.asp"
        XMLObject.open "GET", SendStr, False
        XMLObject.setRequestHeader "CONTENT-TYPE", "application/x-www-form-urlencoded"
        XMLObject.send
        If XMLObject.Status <> 200 Then
            NetworkState = False
        Else
            NetworkState = True
            ReturnBody = XMLObject.responseBody
            ReturnText = StrConv(ReturnBody, vbUnicode)
            '...
        End If
      

  11.   

    设置注册表值呀
    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Connections