如何快速读取网络上mac地址!

烟灰洒落键盘 2011-09-16 09:31:04
现在有个项目是把一个网络视频播放器放在局域网中,然后获得其mac地址,并且打印出来,但是我们生产的网络上连接着大约200台PC,并且这个网络播放器的网卡也没有什么特殊的地方,有什么好的方法能够获得这个播放器的IP吗?
后来就把电脑和播放器放在单独的网络中,通过遍历这个ip段的所有地址可以找到这个IP,并且通过IP获得对应的mac地址,但是问题就这里,因为这个单独的网络不在我们局域网里面,无法访问到我们数据库,但是客户要求打印mac地址同时,还要把mac以及对应的SN存入我们数据库!有什么好的解决方案?
遍历局域网的代码如下:
 
[DllImport("Iphlpapi.dll ")]
private static extern int SendARP(Int32 dest, Int32 host, ref Int64 mac, ref Int32 length);
[DllImport("Ws2_32.dll ")]
private static extern Int32 inet_addr(string ip);

private void button1_Click(object sender, EventArgs e)
{
Thread t=new Thread(new ThreadStart(EnumComputers));
t.Start();
}

int i = 0;

private void EnumComputers()
{
try
{
for (int i = 1; i <= 255; i++)
{
Ping myPing;
myPing = new Ping();
myPing.PingCompleted += new PingCompletedEventHandler(_myPing_PingCompleted);

string pingIP = "169.254.5." + i.ToString();
myPing.SendAsync(pingIP, 1000, null);
}
}
catch
{

}
}

private void _myPing_PingCompleted(object sender, PingCompletedEventArgs e)
{

if (e.Reply.Status == IPStatus.Success)
{
ListItemAdds(e.Reply.Address.ToString() + "| " + getRemoteMac(e.Reply.Address.ToString()) +"\r\n");
i++;

}

}

public string getRemoteMac( string remoteIP)
{
Int32 ldest = inet_addr(remoteIP); //目的ip
try
{
Int64 macinfo = new Int64();
Int32 len = 6;
int res = SendARP(ldest, 0, ref macinfo, ref len);
return Convert.ToString(macinfo, 16);
}
catch (Exception err)
{
Console.WriteLine("Error:{0}", err.Message);
}
return 0.ToString();
}


delegate void ListItemAdd(string s_Value);

public void ListItemAdds(string s_Value)
{
if (listBox1.InvokeRequired)
{
this.Invoke(new ListItemAdd(ListItemAdds), new object[] { s_Value });
}
else
{
listBox1.Items.Add(s_Value);
}
}

}
...全文
93 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
烟灰洒落键盘 2011-09-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 oysy 的回复:]

这与程序没啥关系,你只要配置播放器和PC的IP地址和你们数据库服务器的IP地址,在一个VLAN就行了,
[/Quote]

要是这样的话我扫描当前网络的时候会扫描到很多mac地址,都无法区分播放器的mac是哪个,关键问题是我们的服务器防火墙是不允许我扫描它的mac地址,否则会被列入黑名单,网络工程师要么就放在生产的网络里面,要么就隔离所有的网络!
飞天凤凰601 2011-09-16
  • 打赏
  • 举报
回复
这样他们就能互相访问了,写数据库就没有问题了。
飞天凤凰601 2011-09-16
  • 打赏
  • 举报
回复
这与程序没啥关系,你只要配置播放器和PC的IP地址和你们数据库服务器的IP地址,在一个VLAN就行了,

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧