当前位置:编程学习 > C#/ASP.NET >>

【急】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,不知这是什么原因。 --------------------编程问答--------------------
引用 2 楼 pandenghui 的回复:
谢谢,这个也算是一种折衷的办法,但我在本机遇到过这样的问题不知是什么缘故,就是本来是本地连接1通internet网络,但如果直接给httprequest指定使用本地连接1的话就上不了网,而先选一次ms tcp loopback inte易做图ce后再拼写本地连接就可以接通internet,不知这是什么原因。


补充一下吧:
其实这两天脑袋里面一直在想兄弟的这个问题,因为自己是搞网络的,知道在1楼给兄弟的这个建议是有瑕疵的,瑕疵在于:比如由于某些原因(单位不允许),主机上面本身不允许访问所有的外网,只允许访问新浪网,这个时候可能是通过设置指定路由来实现访问新浪网,而非走缺省路由,就会出现缺省路由并不指向公网网卡的情况。

现在我想到的逻辑就是:
1.缺省路由有可能指向公网网卡。
2.非缺省路由,可以通过正则表达式的方式,检索出属于公网ip地址的目的路由,其肯定指向公网网卡(除非人为设置错了,但这个不是程序能够规避的)。

应该没有其他的情况了,呵呵。 --------------------编程问答-------------------- “特别指定一个上网连接”?

打印 ipconfig/all 里边的各个连接之下ipv4地址好了。 --------------------编程问答--------------------
引用楼主 pandenghui 的回复:
但有很多系统需要特别指定一个上网连接,如何快速选择正确的选择那个上网的连接

我觉得这两句自相矛盾。要想快速选择正确的上网连接,就是使用0.0.0.0好了。 --------------------编程问答--------------------
引用 4 楼 sp1234 的回复:
“特别指定一个上网连接”?

打印 ipconfig/all 里边的各个连接之下ipv4地址好了。


这个功能直接使用下面这段代码就可以得到本机上所有IPAddress的数组了。


IPAddress[] ipAr = System.Net.Dns.GetHostAddresses(System.Environment.MachineName)
--------------------编程问答--------------------
引用楼主 pandenghui 的回复:
比如,系统中有,本地连接1,本地连接2,宽带连接,用httprequest一般系统都能自动适应,但有很多系统需要特别指定一个上网连接,如何快速选择正确的选择那个上网的连接

lz不是我打击你,从你的描述看你整个儿没有概念呢。
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,