以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何获得本机IP地址呢?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=102995)

--  作者:zhsenchzhi
--  发布时间:2017/6/28 23:03:00
--  如何获得本机IP地址呢?
请问, 如何获得本机IP地址呢?
--  作者:有点色
--  发布时间:2017/6/28 23:30:00
--  

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=59092&skin=0

 


--  作者:zhsenchzhi
--  发布时间:2017/6/29 0:48:00
--  
不行呀, 获得的不行,不是一个活动的当前Ip, 我机器上有 好几个网卡,该 怎样才能获得 正在使用着的呢?
--  作者:有点色
--  发布时间:2017/6/29 9:17:00
--  

 没问题啊

 

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

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)

Dim mc = System.Text.RegularExpressions.Regex.Matches(info, "[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+")
If mc.count > 1 Then
    Return mc(1).value

Else
    Return Nothing
End If

 


--  作者:zhsenchzhi
--  发布时间:2017/6/29 19:44:00
--  
试了一下这个方法基本不可用

(1) 效率很低, 执行一下,要将近一分钟

(2) 结果也不对,取到的是家里的无线路由器的Ip,而不是我的机器上的,如下图所示


图片点击可在新窗口打开查看此主题相关图片如下:123.png
图片点击可在新窗口打开查看




--  作者:有点色
--  发布时间:2017/6/29 20:46:00
--  

尝试

 

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=32539&skin=0

 


--  作者:有点色
--  发布时间:2017/6/29 20:51:00
--  

或者试试

 

Dim cmd As  new Process()
cmd.StartInfo.FileName = "ipconfig"
\'cmd.StartInfo.Arguments = ""

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)

Dim mc = System.Text.RegularExpressions.Regex.Matches(info, "(?<= IPv4 地址.+)[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+")
If mc.count > 0 Then
    Return mc(0).value
Else
    Return Nothing
End If


--  作者:zhsenchzhi
--  发布时间:2017/6/30 20:05:00
--  

Dim cmd As  new Process()
cmd.StartInfo.FileName = "ipconfig"
\'cmd.StartInfo.Arguments = ""

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


楼上这种方式执行效率很低的,要将近 1分钟, 为了获取一个 IP 地址,不值,  


--  作者:有点蓝
--  发布时间:2017/6/30 21:00:00
--  
Dim adapters() As System.Net.NetworkInformation.NetworkInterface = System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()
For Each adapter As System.Net.NetworkInformation.NetworkInterface In adapters
    
    Output.Show("描述:" & adapter.Description)
    Output.Show("标识符:" & adapter.Id)
    Output.Show("名称:" & adapter.Name)
    Output.Show("类型:" & adapter.NetworkInterfaceType)
    Output.Show("速度:" & adapter.Speed * 0.001 * 0.001 & "M")
    Output.Show("操作状态:" & adapter.OperationalStatus)
    Output.Show("MAC 地址:" & adapter.GetPhysicalAddress().Tostring)
    
    Dim ipp = adapter.GetIPProperties().UnicastAddresses
    For Each ip As System.Net.NetworkInformation.UnicastIPAddressInformation  In ipp
        If ip.Address.AddressFamily = System.Net.Sockets.AddressFamily.InterNetwork
            Output.Show("IP 地址: " & ip.Address.ToString())
            Exit For
        End If
    Next
Next

操作状态为1的就是活动的网卡