以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]读本机IP地址  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=59092)

--  作者:zxl8813
--  发布时间:2014/10/29 16:03:00
--  [求助]读本机IP地址
请教各位高手,如何读取本机的IP地址和mac地址
--  作者:Bin
--  发布时间:2014/10/29 16:05:00
--  
http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=55993&skin=0
--  作者:supwork
--  发布时间:2015/1/15 9:20:00
--  
建议官方将本机IP地址,MAC地址 弄进系统常量里
--  作者:supwork
--  发布时间:2015/1/15 9:30:00
--  

官方可能会说,使用类似语句获取

 

 

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
messagebox.show(IPAdress.Tostring) \'获得MAC地址
msgbox(HostName)

 

但是这获取到的IP是一个数组中的一个,取到的IP并不是当前活动的IP,怎么其它软件提供的取本机IP地址均符合要求,到了FT取本机IP我就搞不定了呢.

AddressList.GetValue(0) \'获得本机的IP  问题是MICROSOFT公司并没有把活动网卡,地址放在第1位呀,要想取得正确的IP,这个数字是随机的

 


--  作者:有点甜
--  发布时间:2015/1/15 9:40:00
--  
 就是第一个啊
--  作者:Bin
--  发布时间:2015/1/15 9:42:00
--  
Dim IPAdress As System.Net.IPAddress
Dim HostName As String
HostName = System.Net.Dns.GetHostName \'获得本机的机器名
Dim l As Integer = System.Net.Dns.GetHostByName(HostName).AddressList.Length
For i As Integer=0 To l-1
  IPAdress = System.Net.Dns.GetHostByName(HostName).AddressList.getValue(i) \'获得本机的IP
  output.show(IPAdress.Tostring)
Next


这样列出所有网卡的IP

--  作者:supwork
--  发布时间:2015/1/15 9:45:00
--  

第一个不是我想的. 比如我本机实际使用的IP地址是:192.168.1.83 其它软件取IP是取的这个的.

 

用FT取第一个是192.168.37.1 这个网卡存在并没有使用.

 

经测试IPAdress = System.Net.Dns.GetHostByName(HostName).AddressList.GetValue(2) \'获得本机的IP 才获取的是192.168.1.83

 


IPAdress = System.Net.Dns.GetHostByName(HostName).AddressList.GetValue(0) \'获得本机的IP  获得的是无效IP

 

我电脑有网卡,无线网卡,还有虚拟网卡两个

 

我不要所有网卡的IP,只要对外活动的IP

[此贴子已经被作者于2015-1-15 9:49:10编辑过]

--  作者:有点甜
--  发布时间:2015/1/15 10:04:00
--  

 换一种方法,获取到字符串后自己截取得到

 


Dim cmd As  new Process()
cmd.StartInfo.FileName = "tracert"
cmd.StartInfo.Arguments = "baidu.com -h 1"

cmd.StartInfo.RedirectStandardOutput = True
cmd.StartInfo.RedirectStandardInput = True
cmd.StartInfo.UseShellExecute = False
cmd.StartInfo.CreateNoWindow = True

cmd.Start()
Dim info As String = cmd.StandardOutput.ReadToEnd()
msgbox(Info)


--  作者:supwork
--  发布时间:2015/1/15 10:32:00
--  
算了,看来FT处理本机IP有点麻烦,就不记录IP了改记录 计算机名称吧
--  作者:chnfo
--  发布时间:2016/4/19 20:03:00
--  

Dim cmd As  new Process()
cmd.StartInfo.FileName = "tracert"
cmd.StartInfo.Arguments = "baidu.com -h 1"

cmd.StartInfo.RedirectStandardOutput = True
cmd.StartInfo.RedirectStandardInput = True
cmd.StartInfo.UseShellExecute = False
cmd.StartInfo.CreateNoWindow = True

cmd.Start()
Dim info As String = cmd.StandardOutput.ReadToEnd()
msgbox(Info)


----如果是连着wifi上网,对外的IP能获取吗?