首页 新闻 会员 周边

.NET / PING多个IP地址问题 如何高效

0
悬赏园豆:30 [已解决问题] 解决于 2016-03-29 10:13

情况描述:

我用.NET写了一个客户端,每次启动的时候都要检测多个IP地址看是否通,通了连接最快返回值的那个IP,检测操作是用的异步方式处理的。在处理获得可用最快IP的过程中有一些漫长。

我需要判断IP,还要判断端口是否开启可用。

服务器端装在IIS上,因为使用的客户环境因素,需要做多条线路的端口映射,有些客户用的内网,有些用的外网,地址做了多个IP地址映射过来(有移动的,电信的,联通的)

 

问题:

想请教一下园子里面的大神,.NET的话除了PING检测网络有没有其他更高效检测的方法或者模式。

 

 

PS:我其实就写了个升级程序,启动的时候先调用个自己写的比较方法检测一下各个线路IP是否通顺。但效率太慢了。

蜗牛阿布的主页 蜗牛阿布 | 初学一级 | 园豆:138
提问于:2016-03-05 23:44
< >
分享
最佳答案
0

用SendPingAsync来异步ping,带上超时时间,先一口气全部ping了,用Task.WaitAny获取最快的ping结果,所需的时间最大也就是你的超时时间了,慢不到哪儿去吧。

收获园豆:30
天方 | 大侠五级 |园豆:5407 | 2016-03-09 00:58
其他回答(2)
0

还可以用操作系统的InternetGetConnectedState函数本地系统的网络连接状态

using System.Runtime.InteropServices; 
namespace internet 
{ 

public class Class1 
{ 
[DllImport("wininet.dll")] 
private extern static bool InternetGetConnectedState( out int connectionDescription, int     reservedValue ) ; 
public Class1(){} 
private bool IsConnected() 
{ 
int I=0; 
bool state = InternetGetConnectedState(out I,0); 
return state; 
} 
} 

}
刘宏玺 | 园豆:14020 (专家六级) | 2016-03-06 01:42
0

Parallel.ForEach

Daniel Cai | 园豆:10424 (专家六级) | 2016-03-07 09:40
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册