首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

怎么快速读取网络上mac地址

2012-04-17 
如何快速读取网络上mac地址!现在有个项目是把一个网络视频播放器放在局域网中,然后获得其mac地址,并且打印

如何快速读取网络上mac地址!
现在有个项目是把一个网络视频播放器放在局域网中,然后获得其mac地址,并且打印出来,但是我们生产的网络上连接着大约200台PC,并且这个网络播放器的网卡也没有什么特殊的地方,有什么好的方法能够获得这个播放器的IP吗?
  后来就把电脑和播放器放在单独的网络中,通过遍历这个ip段的所有地址可以找到这个IP,并且通过IP获得对应的mac地址,但是问题就这里,因为这个单独的网络不在我们局域网里面,无法访问到我们数据库,但是客户要求打印mac地址同时,还要把mac以及对应的SN存入我们数据库!有什么好的解决方案?
  遍历局域网的代码如下:
 

C# code
        [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);            }        }    }


[解决办法]
这与程序没啥关系,你只要配置播放器和PC的IP地址和你们数据库服务器的IP地址,在一个VLAN就行了,
[解决办法]
这样他们就能互相访问了,写数据库就没有问题了。

热点排行