c#如何用ping的方法验证代理IP是否可用 之前用webrequest 感觉慢了想用ping 的方法来做下 看是否验证速度会快一些但不知道如何写代码 找高手请教下 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 .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 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; } 突然感觉。没有什么是.net里没封装的。 怎么都返回 false 啊?代理IP 带端口的是不是需要另外处理下 端口? 可以验证如果能ping通就OK 端口没法ping.因为ping的协议是ICMP在ip层,没有端口的概念的。你再windows 的commandline中也没法给ping指定端口的。 也就是去掉代理IP的端口 直接ping 吗? 这个ping 只能验证 局域网内的IP啊?如:192.168.1.*代理IP不能验证 提示出错 能Ping通不代表代理可用,Ping不通也不一定代理不可用,还是进行端口测试最有效。如果觉得WebRequest慢的话,直接用Socket连接代理的端口好了。 去掉端口号,IP写XXX.XXX.XXX.XXX 的形式,不要写XXX.XXX.XXX.XXX:XX 我也觉得你得用Socket连接代理的端口。 不是所有有效地址都可以Ping通的,可能对方的防火墙启用了ICMP过滤的功能 那 Socket 如何验证代理ip了 你用Socket连接端口,如果代理不可用,还是那么慢才能返回,达不到你的效果。简单说吧,如果对方不让你Ping,你没什么办法的。 方法很简单啊, 就普通的啊,申明一个TcpClinet实例,用他的Connect方法连接目标IP的端口,成功,就存在,失败就不存在。 ICMP协议很容易发起洪水攻击...所以很多防火墙都禁止ICMP协议,多数服务器都不响应ICMP消息...ping不通但能访问是很正常的... 求问大神,该怎样去使用Socket连接代理的端口?有没有源码可供学习 求问大神,该怎样去使用Socket连接代理的端口?有没有源码可供学习MSDN里有例子,学习一下吧。http://msdn.microsoft.com/zh-cn/library/system.net.sockets.socket(v=vs.80).aspx 用c#如何同时控制2个摄像头? 谢谢赐教 怎样批量屏蔽网页关键字 请问再哪里能下载到C#的编译工具,不用VS2005。 怎么判断datagridview控制已初始化完成 关于程序集 类似eclipse,VS2003的启动画面怎么做啊? (在线等)如何将一个序列化(二进制)后的对象保存到sql server? xp上用超级终端测试短信猫无法输入命令 实战经验性问题,高手请指教 hashtable和arraylist的具体区别!online! 枚举的序列化与反序列化问题 老问题:winform嵌套另外的exe程序(别人开发的)
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
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;
}
怎么都返回 false 啊?代理IP 带端口的是不是需要另外处理下 端口?
如果能ping通
就OK
你再windows 的commandline中也没法给ping指定端口的。
也就是去掉代理IP的端口 直接ping 吗?
如:192.168.1.*代理IP不能验证 提示出错
去掉端口号,IP写XXX.XXX.XXX.XXX 的形式,不要写XXX.XXX.XXX.XXX:XX
不是所有有效地址都可以Ping通的,可能对方的防火墙启用了ICMP过滤的功能
那 Socket 如何验证代理ip了
方法很简单啊, 就普通的啊,申明一个TcpClinet实例,用他的Connect方法连接目标IP的端口,成功,就存在,失败就不存在。
求问大神,该怎样去使用Socket连接代理的端口?有没有源码可供学习
求问大神,该怎样去使用Socket连接代理的端口?有没有源码可供学习MSDN里有例子,学习一下吧。
http://msdn.microsoft.com/zh-cn/library/system.net.sockets.socket(v=vs.80).aspx