以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助] 局域网中如何从IP得到到HostName  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=75939)

--  作者:15986720145
--  发布时间:2015/10/18 9:44:00
--  [求助] 局域网中如何从IP得到到HostName
Dim IPAdress As System.Net.IPAddress
Dim HostName As String
HostName = System.Net.Dns.GetHostName \'获得本机的机器名
IPAdress = System.Net.Dns.GetHostByName(HostName).AddressList.GetValue(0) \'获得本机IP地址

有没有类似 HostName = System.Net.Dns.GetHostByAddr(IPAdress)  \'自己虚构的方法,不知道存不存在
               可以从IP得到电脑名的方法。

求指点!!

--  作者:大红袍
--  发布时间:2015/10/18 10:16:00
--  
Dim str As String = System.Net.Dns.Resolve("192.168.1.101").HostName
msgbox(str)

--  作者:大红袍
--  发布时间:2015/10/18 10:18:00
--  

或者用 net view

 

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=72154&replyID=496898&skin=1

 


--  作者:15986720145
--  发布时间:2015/10/19 11:01:00
--  
追问:如何获取局域网内所有在线(已经开机)的电脑名字和IP;
我的做法 
1.获取本机IP,然后分析IP段,
2.用 TryConnectHost("192.168.1.X")  \'X = 0 to 255,
   如果能连上,就获取该IP的电脑名,这样会很慢,效率很低
有比较好点的方法吗。

--  作者:大红袍
--  发布时间:2015/10/19 11:06:00
--  
看3楼
--  作者:大红袍
--  发布时间:2015/10/19 11:09:00
--  

用arp也行

 

Dim p As new Process()
p.StartInfo.FileName = "cmd.exe"
p.StartInfo.UseShellExecute = False \'关闭Shell的使用
p.StartInfo.RedirectStandardInput = True \'重定向标准输入
p.StartInfo.RedirectStandardOutput = True \'重定向标准输出
p.StartInfo.RedirectStandardError = True \'重定向错误输出
p.StartInfo.CreateNoWindow = True \'设置不显示窗口
p.Start()
p.StandardInput.WriteLine("arp -a")
p.StandardInput.WriteLine("exit")
Dim strRst As String = p.StandardOutput.ReadToEnd()

msgbox(strRst)