Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何ping本地网络中的所有设备并从中获得响应?_C#_Networking_Ping - Fatal编程技术网

C# 如何ping本地网络中的所有设备并从中获得响应?

C# 如何ping本地网络中的所有设备并从中获得响应?,c#,networking,ping,C#,Networking,Ping,我想使用c#查找本地网络上的所有设备 目前的解决方案基于ping本地网络上的每个ip。这里有一些解释: 问题是,如果我的电脑上有多个网络接口(例如一个wifi和一个以太网),我如何理解应该ping哪一个?如何为每个网络找到合适的地址范围?等等如果子网掩码非常大(例如,当子网为255.255.0.0时),则执行此操作将花费大量时间 还有其他一些建议的解决方案,例如: 但是我怎样才能ping广播地址并找到谁在应答呢?用C#ping只会对一个IP返回一个结果(我说得对吗) 有更好的解决方案吗?“但

我想使用c#查找本地网络上的所有设备

目前的解决方案基于ping本地网络上的每个ip。这里有一些解释:

问题是,如果我的电脑上有多个网络接口(例如一个wifi和一个以太网),我如何理解应该ping哪一个?如何为每个网络找到合适的地址范围?等等如果子网掩码非常大(例如,当子网为255.255.0.0时),则执行此操作将花费大量时间

还有其他一些建议的解决方案,例如:


但是我怎样才能ping广播地址并找到谁在应答呢?用C#ping只会对一个IP返回一个结果(我说得对吗)


有更好的解决方案吗?

“但是我如何ping广播地址并找到谁在应答?”没有广播ping这样的东西。如果你看看像nmap这样的网络扫描工具,它有一个“ping扫描”功能,它识别网络上节点的方式是通过单独的ping。

合适的地址=获取接口的IP,获取其网络掩码,这将为您提供“本地”IP的范围.@MarcB如何获取接口Ip及其掩码?我如何枚举计算机中的接口?出于好奇,也许是为了提出一个完全不同的解决方案,您介意告诉我们总体情况吗?为什么要ping所有可能的地址?@RenniePet:我正在查找本地网络上的所有设备并找到它们的Ip。我n通过这种方式,我可以扫描它们,以确定它们是否是我想要的设备。例如,假设我试图在网络中搜索我自己的所有设计设备。如果我知道它们,那么我可以向发送ID请求,并确保它们位于该IP。我可以向每个IP发送请求,但这太耗时了。我更喜欢使用知道地址,然后从那里开始搜索。我不是这方面的专家,但我认为您应该研究Windows远程过程调用功能。我的理解是,客户端程序(如Outlook)通过RPC找到他们想要与之通信的主机(Exchange Server)。这利用了命名服务,所以Exchange会告诉RPC系统“我是一个Exchange服务器,任何寻找Exchange服务器的人都可以与我交谈”。Outlook程序对RPC说:“附近有Exchange服务器吗,如果有,请将我连接到它们。”“。这避免了盲目ping的问题。那么ping广播地址呢?这里记录的方法是:如果我可以读取ARP,我可以找到IP的范围,然后发送命令直接获取IP。