之前用webrequest  感觉慢了想用ping 的方法来做下   看是否验证速度会快一些但不知道如何写代码   找高手请教下

解决方案 »

  1.   

    .net framework里有Ping类
    public static void LocalPing ()
            {
                // Ping's the local machine.
                Ping pingSender = new Ping ();
                IPAddress address = IPAddress.Loopback;
                PingReply reply = pingSender.Send (address);            if (reply.Status == IPStatus.Success)
                {
                    Console.WriteLine ("Address: {0}", reply.Address.ToString ());
                    Console.WriteLine ("RoundTrip time: {0}", reply.RoundtripTime);
                    Console.WriteLine ("Time to live: {0}", reply.Options.Ttl);
                    Console.WriteLine ("Don't fragment: {0}", reply.Options.DontFragment);
                    Console.WriteLine ("Buffer size: {0}", reply.Buffer.Length);
                }
                else
                {
                    Console.WriteLine (reply.Status);
                }
            }
    参考
    http://msdn.microsoft.com/en-us/library/hb7xxkfx.aspx
      

  2.   

    Ping函数,输入参数是IP地址。
            public bool Ping(string ip)
            {
                System.Net.NetworkInformation.Ping p = new System.Net.NetworkInformation.Ping();
                System.Net.NetworkInformation.PingOptions options = new System.Net.NetworkInformation.PingOptions();
                options.DontFragment = true;
                string data = "Test Data!";
                byte[] buffer = Encoding.ASCII.GetBytes(data);
                int timeout = 1000; // Timeout 时间,单位:毫秒
                System.Net.NetworkInformation.PingReply reply = p.Send(ip, timeout, buffer, options);
                if (reply.Status == System.Net.NetworkInformation.IPStatus.Success)
                    return true;
                else
                    return false;
            }
      

  3.   

    突然感觉。没有什么是.net里没封装的。
      

  4.   


    怎么都返回 false 啊?代理IP 带端口的是不是需要另外处理下 端口?
      

  5.   

    可以验证
    如果能ping通
    就OK
      

  6.   

    端口没法ping.因为ping的协议是ICMP在ip层,没有端口的概念的。
    你再windows 的commandline中也没法给ping指定端口的。
      

  7.   


    也就是去掉代理IP的端口  直接ping 吗?
      

  8.   

    这个ping  只能验证   局域网内的IP啊?
    如:192.168.1.*代理IP不能验证  提示出错  
      

  9.   

    能Ping通不代表代理可用,Ping不通也不一定代理不可用,还是进行端口测试最有效。如果觉得WebRequest慢的话,直接用Socket连接代理的端口好了。
      

  10.   


    去掉端口号,IP写XXX.XXX.XXX.XXX 的形式,不要写XXX.XXX.XXX.XXX:XX
      

  11.   

    我也觉得你得用Socket连接代理的端口。
      

  12.   


    不是所有有效地址都可以Ping通的,可能对方的防火墙启用了ICMP过滤的功能
      

  13.   


    那 Socket 如何验证代理ip了
      

  14.   

    你用Socket连接端口,如果代理不可用,还是那么慢才能返回,达不到你的效果。简单说吧,如果对方不让你Ping,你没什么办法的。
      

  15.   


    方法很简单啊, 就普通的啊,申明一个TcpClinet实例,用他的Connect方法连接目标IP的端口,成功,就存在,失败就不存在。
      

  16.   

    ICMP协议很容易发起洪水攻击...所以很多防火墙都禁止ICMP协议,多数服务器都不响应ICMP消息...ping不通但能访问是很正常的...
      

  17.   


    求问大神,该怎样去使用Socket连接代理的端口?有没有源码可供学习
      

  18.   


    求问大神,该怎样去使用Socket连接代理的端口?有没有源码可供学习MSDN里有例子,学习一下吧。
    http://msdn.microsoft.com/zh-cn/library/system.net.sockets.socket(v=vs.80).aspx