请问VB怎样获取本机外网动态的IP地址啊(不是通过访问ip138网页的方式获取)

请问VB怎样获取本机外网动态的IP地址啊(不是通过访问ip138网页的方式获取),第1张

我们知道内网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问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/10642186.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存