用C#获取局域网内所有机器

如果你使用过P2P终结者或者类似的软件,你会发觉只要一打开就可以看到局域网内部的所有机器,而有时候我们正好有这样的需求,那我们应该怎么样用去获得局域网的所有机器呢?如果你到百度或者GOOGLE上面进行搜索你会发现,网上大致都是采用轮询的方法,让你把所有机器都扫描一遍,如果有反应则表示主机存在,但是这种办法并不可取,不仅耗资源,而且耗时间,即使你单独开一个线程去跑,估计半小时都没有任何结果。网上有人提出更加可笑的办法,说开多一些线程去检测。要知道,线程可不是省油的灯,再说,采用轮询的办法每遇到一台主机不存在就会抛出一个异常,而且该类异常一般都是超时无响应才抛出的,使用异常处理的方式来处理问题将会严重影响应用程序的性能。

这里将介绍如何利用巧妙的方式来获取局域网内所有机器:

1.先调用系统API判断网络是否处于连接状态

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

2.再调用底层硬件获取本地网关地址信息


      
      
      
static   string  GetGateWayAddress()
{
    ManagementObjectCollection moc 
= new ManagementClass("Win32_NetworkAdapterConfiguration").GetInstances();
    
foreach (ManagementObject mo in moc)
    
{
        
foreach (PropertyData p in mo.Properties)
        
{
            
if (p.Name.Equals("DefaultIPGateway"&& (p.Value != null))
            
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: c 是一个字母,属于拉丁字母表。它在国际音标中代表清齿龈音,即舌尖靠近上齿龈发出的音。此外,c 还可以表示温度单位摄氏度(Celsius)。 在计算机科学领域,C 是一种广泛使用的编程语言。它是由丹尼斯·里奇在20世纪70年代初开发的,是一种通用的高级编程语言。C 语言具有简洁、高效和可移植的特点,适合用于开发系统软件和应用程序。许多经典的编程书籍和算法教材都以C 语言为基础进行讲解。 此外,C 还可以表示一种音乐调号中的大调音阶,使用这个调号可以演奏多种音乐风格的作品。C 大调的音阶包含了红白从低到高的七个音符,分别是C、D、E、F、G、A、B。它是乐器演奏和音乐创作中常用的音阶之一。 总而言之,无论是作为一个字母、温度单位、编程语言还是音乐音阶,C 都在各自领域中扮演着重要的角色。在字母表中,C 是一个辅音字母,发音时需要舌头与上齿龈接触;在计算机领域中,C 是一种高效、可移植的编程语言,被广泛应用于软件开发;而在音乐领域中,C 大调音阶是一种常用的音阶,被用于演奏和创作多种风格的音乐作品。 ### 回答2: c是英文字母表中的第三个字母,也是拉丁字母表中的一个字母。在英语中,c通常发出/k/的音,例如cat(猫)、cake(蛋糕)等单词。c还可以和其他字母组合形成不同的发音,例如ch(/tʃ/)和th(/θ/)。在国际音标中,c的发音为/s/。c还可以用作罗马数字中的100。在化学元素周期表中,c代表碳(Carbon),是一种常见的化学元素,它在自然界中广泛存在于有机物和无机物中。c还可以代表光速(速度的极限),约为每秒300,000公里。在数学中,c是一个常用的符号,通常用来表示常数。此外,c还可以代表某个物理量的光速因子。总的来说,c是一个非常常见且多义的字母,在不同的领域中都有着重要的含义和用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值