我们知道内网ip和外网ip可能不同,这涉及到“网络地址转换”(NAT)。
事实上,只有和公网联络才有可能获取外网ip地址,直接用winsock的localip属性,或者ipconfig之类的方法(在内外网ip不同的情况下)获取的都是内网ip!
获取外网ip可以用你说的ip138网页的方式,可以通过winsock、inet、xml>
DOS获取本机IP(括号内的为注释,输命令时别复制进去)。
方法1:arp -a (Interface:后面的就是你自己的IP地址)
方法2:ipconfig/all (IP Address后面的就是你自己的IP地址)
DOS重新获取IP
cmd /c ipconfig /release (释放IP,不执行这步下一步命令将无效)
cmd /c ipconfig /renew (重新获得IP)
上不了网或IP冲突时可以在记事本里贴入如下代码保存为如下文件名并执行:
重新获取IPbat
@echo off
@echo 正在重新获取IP,请稍候
cmd /c ipconfig /release > nul
cmd /c ipconfig /renew > nul
arp -a
@echo "Interface:后面的就是你自己的IP地址"
@echo "按任意建测试网络联通(不断跳说明网络正常)"
pause
ping >
做exe程序获取本机IP地址用
SystemNetDnsGetHostByName(SystemNetDnsGetHostName())AddressList
做web程序获取客户端的IP地址用
>
Private Sub Form_Load()
Dim Cpu, Mer, Disk, Mac, Ip, DiskSerial, PCName
strComputer = ""
Cpu = ""
Mer = ""
Disk = ""
Mac = ""
Ip = ""
DiskSerial = ""
PCName = ""
'密码初始化标签
TePsText = ""
'获得CPU信息
Set objWMIService = GetObject("winmgmts:\\" & strComputer)
Set colItems = objWMIServiceExecQuery("Select from Win32_Processor")
For Each objItem In colItems
Cpu = objItemName
Next
TeCpuText = Trim(Cpu)
'获得内存信息
Set wbemObjectSet = objWMIServiceInstancesOf("Win32_LogicalMemoryConfiguration") 'Win32_LogicalMemoryConfiguration Win32_PhysicalMemory
For Each wbemObject In wbemObjectSet
Mer1 = wbemObjectTotalPhysicalMemory ' & "KB"
Next
Mer = Int(((CLng(Mer1)) / 1024 10) / 10)
TeMerText = CStr(Mer) & "MB"
'获得硬盘信息
Set wbemObjectSet = objWMIServiceInstancesOf("Win32_DiskDrive")
For Each wbemObject In wbemObjectSet
Disk = wbemObjectModel
Next
TeDiskText = Disk
Set wbemObjectSet = objWMIServiceInstancesOf("Win32_DiskDrive")
For Each wbemObject In wbemObjectSet
DiskSerial = wbemObjectSignature
Next
TeHd_serialText = DiskSerial
'获得MAC信息
Set colItems = objWMIServiceExecQuery("Select from Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE")
For Each objItem In colItems
Mac = Mac + " " + objItemmacaddress
Next
TeMacText = Replace(Trim(Mac), ":", "-")
'获得电脑名称
Set colItems = objWMIServiceExecQuery _
("Select from Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE")
For Each objItem In colItems
PCName = objItemDNSHostName
Next
TePcNameText = PCName
strComputer = ""
Set objWMI = GetObject("winmgmts://" & strComputer & "/root/cimv2")
Set colIP = objWMIExecQuery("Select from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")
For Each Ip In colIP
If Not IsNull(Ipipaddress) Then
For I = LBound(Ipipaddress) To UBound(Ipipaddress)
'Mac = Ipmacaddress(I)objObjectDNSHostName
If Ipipaddress(I) = "0000" Then
Else
TeIpText = Trim(TeIpText + " " + Ipipaddress(I))
End If
'MsgBox "IP 地址:" & IPipaddress(I) & Chr(10) & _
"网卡类型:" & IPDescription(I) & Chr(10) & _
"网卡地址:" & IPmacaddress(I)
Next
End If
Next
'Set wbemObjectSet = objWMIServiceInstancesOf("Win32_NetworkAdapterConfiguration")
'For Each wbemObject In wbemObjectSet
' Mac = wbemObjectMACAddress
'Next
'TeMacText = Mac
'获得ip 及电脑名称信息
'Set winIP = GetObject("Win32_NetworkAdapterConfiguration") 'CreateObject("MSWinsockWinsock")
'TeIpText = winIPlocalip
'TePcNameText = winIPLocalHostName
End Sub
我以前也被这个问题困扰过,后来想了一个办法,就是用winsock控件直接用tcp协议和一个网站建立链接,因为和网站建立链接用的都是广域网的ip所以当链接成功后只需要查看winsock的本地ip属性就知道了,为了保证网站长期有效要挑大型的网站,我特意挑了百度的首页地址就是就断掉链接不用管>
Dim IPAdress As SystemNetIPAddress
HostName = SystemNetDnsGetHostName '获得本机的机器名
IPAdress = SystemNetDnsGetHostByName(HostName)AddressListGetValue(0) '获得本机的IP
MeTextBox1Text = HostName '本机机器名
MeTextBox2Text = IPAdressToString '本机的IP
以上就是关于请问VB怎样获取本机外网动态的IP地址啊(不是通过访问ip138网页的方式获取)全部的内容,包括:请问VB怎样获取本机外网动态的IP地址啊(不是通过访问ip138网页的方式获取)、在VB中怎样显示本机的IP地址、(200分)VB 获取本机IP和重新获取IP问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)