方法很简单,而且适用于windows xp/2003/vista/7/2008。
运行效果如下:
众所周知,在windows下的命令行程序arp能给我们返回ARP表,那么一切问题就迎刃而解了。在调用arp前,我们只需要做的就是ping 局域网内的ip,最后通过调用arp指令即可获取全部的ip和mac信息了
1首先简历一个bat批处理文件,当然,你可以在调用前动态创建
在C:创建一个a.bat,其内容如下:
del C:a.txt arp -a > c:a.txt
2现在我们来运行一下a.bat,看到的结果其实并不是完全如我们所愿(如下),所以我们需要使用正则表达式来捕获所需要的数据。
接口: 192.168.1.4 --- 0xd Internet 地址 物理地址 类型 192.168.1.1 48-5b-39-db-d5-c8 动态 192.168.1.8 20-7c-8f-2f-be-18 动态 192.168.1.255 ff-ff-ff-ff-ff-ff 静态 224.0.0.22 01-00-5e-00-00-16 静态 224.0.0.100 01-00-5e-00-00-64 静态 224.0.0.252 01-00-5e-00-00-fc 静态 239.255.255.250 01-00-5e-7f-ff-fa 静态 255.255.255.255 ff-ff-ff-ff-ff-ff 静态
3创建Windows应用程序,并在窗口上创建一个Progress Button ListView控件,双击Button输入代码如下:
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles Button1.Click For i = 1 To 10 My.Computer.Network.Ping("192.168.1." & i,5) Me.ProgressBar1.Value = i / 10 * 100 Application.DoEvents() Next Shell("C:a.bat",AppWinStyle.Hide,True,1000) Dim regex As New System.Text.RegularExpressions.Regex("(d{1,3}.d{1,3}) +(ww-ww-ww-ww-ww-ww)") Dim mach As System.Text.RegularExpressions.MatchCollection While True If My.Computer.FileSystem.FileExists("C:a.txt") Then Exit While End If End While Dim tmp As String = My.Computer.FileSystem.ReadAllText("C:a.txt") mach = regex.Matches(tmp) Me.ListView1.Items.Clear() Dim lsv As ListViewItem For Each x As System.Text.RegularExpressions.Match In mach Dim z As System.Text.RegularExpressions.Group z = x.Groups(1) lsv = New ListViewItem() lsv.Text = z.Value z = x.Groups(2) lsv.SubItems.Add(z.Value) Me.ListView1.Items.Add(lsv) Next End Sub
End Class (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|