【发布时间】:2014-12-17 07:15:42
【问题描述】:
我正在尝试获取连接到我的网络的设备的 IP(我连接到的 WLAN)。首先我在 Win8 中使用命令行并在知道我自己的 IP 的同时连续 ping 那里(每次递增并 ping)。要像WnetWatcher 那样以编程方式进行操作,我正在通过调用传递attempts=4 和timeout=3 的函数来使用Ping Class,但蓝屏显示PROCESS_HAS_BLOCKED_PAGES 和found 这是一个潜在的API 问题。任何人都有比这更好的主意来获取所有设备的 IP,因为 SO 的几个线程使用 Dns 类找到它,但这适用于单个 PC(我的)。
1)。 Ping 的后缀是什么,如果是 Ping 那么如何解决 API 问题。
2).另外,我怎样才能获得路由器 IP,以便我可以为网络上的其他 IP 运行循环,或者有更好的替代方案吗?
public static void Ping(字符串主机,int 尝试,int 超时) {
new Thread(delegate()
{
try
{
System.Net.NetworkInformation.Ping ping = new System.Net.NetworkInformation.Ping();
ping.PingCompleted += new PingCompletedEventHandler(PingCompleted);
ping.SendAsync(host, timeout, host);
}
catch
{
// Do nothing and let it try again until the attempts are exausted.
// Exceptions are thrown for normal ping failurs like address lookup
// failed. For this reason we are supressing errors.
}
}).Start();
}
private static void PingCompleted(object sender, PingCompletedEventArgs e)
{
string ip = (string)e.UserState;
if (e.Reply != null && e.Reply.Status == IPStatus.Success)
{
// Logic for Ping Reply Success
// Console.WriteLine(String.Format("Host: {0} ping successful", ip));
lstlocal.listViewItem //Error ...the intellisense is not accepting it here
}
else
{
// Logic for Ping Reply other than Success
}
}
//function caller code from a button
lstLocal.Items.Clear();
lstLocal.FullRowSelect = true;
bool value;
for (int i = 0; i <= 254; i++)
{
string ping_var = "192.168.1" + "." + i;
value = Ping(ping_var, 4, 3);
// MessageBox.Show("Ping response for"+ping_var +"is" + value);
if(value==true)
{
ListViewItem items=new ListViewItem(ping_var.ToString());
lstLocal.Items.Add(items);
}
}
}
【问题讨论】:
标签: c# sockets ip-address ping wifi