【急】c# 如何快速检测系统中哪个网络连接是连接到Internet的
比如,系统中有,本地连接1,本地连接2,宽带连接,用httprequest一般系统都能自动适应,但有很多系统需要特别指定一个上网连接,如何快速选择正确的选择那个上网的连接 --------------------编程问答-------------------- 没具体做过,友情帮顶吧。不过我有个思路,应该没有问题:
1.查找本地路由表,windows上就是在cmd模式下,敲击route print命令后得到的这种表项。
2.选择0.0.0.0网络对应的那个inte易做图ce,一般都应该是上网的连接。
路由表信息示例大致如下:
C:\>route print
IPv4 Route Table
===========================================================================
Inte易做图ce List
0x1 ........................... MS TCP Loopback inte易做图ce
0x10003 ...00 0c 29 86 1f 12 ...... Intel(R) PRO/1000 MT Network Connection
===========================================================================
===========================================================================
Active Routes:
Network Destination Netmask Gateway Inte易做图ce Metric
0.0.0.0 0.0.0.0 172.16.105.2 172.16.105.131 10(选择这一条对应的接口)
127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1
172.16.105.0 255.255.255.0 172.16.105.131 172.16.105.131 10
172.16.105.131 255.255.255.255 127.0.0.1 127.0.0.1 10
172.16.255.255 255.255.255.255 172.16.105.131 172.16.105.131 10
224.0.0.0 240.0.0.0 172.16.105.131 172.16.105.131 10
255.255.255.255 255.255.255.255 172.16.105.131 172.16.105.131 1
Default Gateway: 172.16.105.2
===========================================================================
其他办法估计都不好使,或者做成“列出所有的本地网络连接,让用户自己选择”的情况。
--------------------编程问答-------------------- 谢谢,这个也算是一种折衷的办法,但我在本机遇到过这样的问题不知是什么缘故,就是本来是本地连接1通internet网络,但如果直接给httprequest指定使用本地连接1的话就上不了网,而先选一次ms tcp loopback inte易做图ce后再拼写本地连接就可以接通internet,不知这是什么原因。 --------------------编程问答--------------------
补充一下吧:
其实这两天脑袋里面一直在想兄弟的这个问题,因为自己是搞网络的,知道在1楼给兄弟的这个建议是有瑕疵的,瑕疵在于:比如由于某些原因(单位不允许),主机上面本身不允许访问所有的外网,只允许访问新浪网,这个时候可能是通过设置指定路由来实现访问新浪网,而非走缺省路由,就会出现缺省路由并不指向公网网卡的情况。
现在我想到的逻辑就是:
1.缺省路由有可能指向公网网卡。
2.非缺省路由,可以通过正则表达式的方式,检索出属于公网ip地址的目的路由,其肯定指向公网网卡(除非人为设置错了,但这个不是程序能够规避的)。
应该没有其他的情况了,呵呵。 --------------------编程问答-------------------- “特别指定一个上网连接”?
打印 ipconfig/all 里边的各个连接之下ipv4地址好了。 --------------------编程问答--------------------
我觉得这两句自相矛盾。要想快速选择正确的上网连接,就是使用0.0.0.0好了。 --------------------编程问答--------------------
这个功能直接使用下面这段代码就可以得到本机上所有IPAddress的数组了。
--------------------编程问答--------------------
IPAddress[] ipAr = System.Net.Dns.GetHostAddresses(System.Environment.MachineName)
lz不是我打击你,从你的描述看你整个儿没有概念呢。
补充:.NET技术 , C#