vb 获取局域网IP的问题

vb 获取局域网IP的问题,第1张

Option Explicit

Const REG_SZ As Long = 1

Const HKEY_LOCAL_MACHINE = &H80000002

Private Declare Function RegCloseKey Lib "advapi32dll" (ByVal hKey As Long) As Long

Private Declare Function RegOpenKey Lib "advapi32dll" Alias "RegOpenKeyA" _

(ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long

Private Declare Function RegCreateKey Lib "advapi32dll" Alias "RegCreateKeyA" _

(ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long

Private Declare Function RegSetValueEx Lib "advapi32dll" Alias "RegSetValueExA" _

(ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, _

ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long

Private Declare Function RegQueryValueEx Lib "advapi32dll" Alias "RegQueryValueExA" _

(ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, _

lpType As Long, lpData As Any, lpcbData As Long) As Long

Private Declare Function RegEnumKey Lib "advapi32dll" Alias "RegEnumKeyA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpName As String, ByVal cbName As Long) As Long

Dim aaa As String

Private Sub Command1_Click()

Dim hKey As Long, hKey1 As Long, hKey2 As Long, ret As Long, ret1 As Long, lenData As Long, typeData As Long

Dim Name As String, name1 As String, name2 As String, s As String, S1 As String

Dim idx As Integer

idx = 0

Name = String(256, Chr(0))

RegCreateKey HKEY_LOCAL_MACHINE, "System\CurrentControlSet\Services\Class\NetTrans", hKey

Text1Text = hKey

Do

ret = RegEnumKey(hKey, idx, Name, Len(Name))

If ret = 0 Then

aaa = Left(Name, InStr(Name, Chr(0)) - 1)

aaa = "System\CurrentControlSet\Services\Class\NetTrans\" & aaa

ret = RegOpenKey(HKEY_LOCAL_MACHINE, aaa, hKey)

'获得IP地址

If ret = 0 Then

name1 = "IPAddress"

name2 = "IPMask"

ret = RegQueryValueEx(hKey, name1, 0, typeData, ByVal vbNullString, lenData)

s = String(lenData, Chr(0))

RegQueryValueEx hKey, name1, 0, typeData, ByVal s, lenData

If s <> "" Then s = Left(s, InStr(s, Chr(0)) - 1)

'获得子网掩码

ret1 = RegQueryValueEx(hKey, name2, 0, typeData, ByVal vbNullString, lenData)

S1 = String(lenData, Chr(0))

RegQueryValueEx hKey, name2, 0, typeData, ByVal S1, lenData

If S1 <> "" Then S1 = Left(S1, InStr(S1, Chr(0)) - 1)

If Val(s) > 0 Then

Text1Text = s

Text2Text = S1

Command2Enabled = True

Exit Sub

End If

End If

idx = idx + 1

End If

Loop Until ret <> 0

End Sub

Private Sub Command2_Click()

Dim hKey As Long

If Text1Text <> "" Then

RegCreateKey HKEY_LOCAL_MACHINE, aaa, hKey

' 修改IP地址

RegSetValueEx hKey, "IPAddress", 0, REG_SZ, ByVal Text1Text, 13

' 修改子网掩码

RegSetValueEx hKey, "IPMask", 0, REG_SZ, ByVal Text2Text, 13

RegCloseKey hKey

End If

End Sub

Private Sub Command3_Click()

End

End Sub

A类网络的IP地址范围为:1001-126255255254;B类网络的IP地址范围为:128101-191255255254;C类网络的IP地址范围为:192011-223255255254。

IP地址是适合大型网和小型网的。地址是自定义的,它的最高位定义地址的类型。A类地址支持多个主机在一个网:最高位为0,跟随有7Bit网络部分和24Bit主机部分。在B类地址,最高位是非0,跟随有14Bit网络号和16Bit主机号。

C类地址以110开始,跟随有21Bit网络号和8Bit主机号。按常规IP地址由加点的字符给出,地址由四部分10进制数组成,用点作分隔。

IP分组的转发规则

路由器仅根据网络地址进行转发。当IP数据包经由路由器转发时,如果目标网络与本地路由器直接相连,则直接将数据包交付给目标主机,这称为直接交付;否则,路由器通过路由表查找路由信息,并将数据包转交给指明的下一跳路由器,这称为间接交付。

路由器在间接交付中,若路由表中有到达目标网络的路由,则把数据包传送给路由表指明的下一跳路由器;如果没有路由,但路由表中有一个默认路由,则把数据包传送给指明的默认路由器;如果两者都没有,则丢弃数据包并报告错误。

以上就是关于vb 获取局域网IP的问题全部的内容,包括:vb 获取局域网IP的问题、如何获取ip地址、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/web/10144597.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存