IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> vb.net 第八节 获取本机网络参数 GetNetworkParams -> 正文阅读

[网络协议]vb.net 第八节 获取本机网络参数 GetNetworkParams

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。

Imports System.Runtime.InteropServices

Public Class Form9

    'typedef struct _IP_ADDR_STRING {
    '  struct _IP_ADDR_STRING* Next;
    '  IP_ADDRESS_STRING IpAddress;
    '  IP_MASK_STRING IpMask;
    '  DWORD Context;
    '} IP_ADDR_STRING, *PIP_ADDR_STRING;

    'typedef struct {
    '  Char            HostName[MAX_HOSTNAME_LEN + 4];
    '  Char            DomainName[MAX_DOMAIN_NAME_LEN + 4];
    '  PIP_ADDR_STRING CurrentDnsServer;
    '  IP_ADDR_STRING  DnsServerList;
    '  UINT            NodeType;
    '  Char            ScopeId[MAX_SCOPE_ID_LEN + 4];
    '  UINT            EnableRouting;
    '  UINT            EnableProxy;
    '  UINT            EnableDns;
    '} FIXED_INFO, *PFIXED_INFO;


    'Const MAX_HOSTNAME_LEN = 132
    'Const MAX_DOMAIN_NAME_LEN = 132
    'Const MAX_SCOPE_ID_LEN = 260

    'Type IP_ADDR_STRING
    '    Next As Long		'指向列表中下一个IP_ADDR_STRING类型。为空,则是最后一个地址
    '    IpAddress As String * 16	'点式十进制字串表示Ip地址
    '    IpMask As String * 16		'子网掩码
    '    Context As Long			'网络IP地址标识,符合AddIPAddress和DeleteIPAddress函数中的网络接口关联参数。
    'End Type

    'Type FIXED_INFO
    '    HostName As String * MAX_HOSTNAME_LEN	'本机名
    '    DomainName As String * MAX_DOMAIN_NAME_LEN	'本机DNS域
    '    CurrentDnsServer As Long		'保留,使用DnsServerList获取DNS服务器的IP地址
    '    DnsServerList As IP_ADDR_STRING	'本机采用的DNS服务器链表
    '    NodeType As Long		'节点类型,以下值:
    '        1       BROADCAST_NODETYPE 		IP广播,b节点NetBIOS名字解析法
    '        2       PEER_TO_PEER_NODETYPE 	点到点通信,p节点名字解析
    '        4       MIXED_NODETYPE				Mixed,m节点NetBIOS名字解析法
    '        8       HYBRID_NODETYPE 			Hybrid,h节点NetBIOS名字解析法
    '        Else									未知节点类型
    '    ScopeId  As String * MAX_SCOPE_ID_LEN	'DHCP范围名字
    '    EnableRouting As Long	'本机能否路由
    '    EnableProxy As Long	'本机能否作为地址解析协议(ARP)代理
    '    EnableDns As Long	'本机能否DNS查询
    'End Type


    Const MAX_HOSTNAME_LEN = 128
    Const MAX_DOMAIN_NAME_LEN = 128
    Const MAX_SCOPE_ID_LEN = 256

    <StructLayout(LayoutKind.Sequential)>
    Public Structure IP_ADDR_STRING
        Public [Next] As IntPtr     '指向列表中下一个IP_ADDR_STRING类型。为空,则是最后一个地址
        <MarshalAs(UnmanagedType.ByValArray, SizeConst:=16)> Public IpAddress() As Char     '点式十进制字串表示Ip地址
        <MarshalAs(UnmanagedType.ByValArray, SizeConst:=16)> Public IpMask() As Char       '子网掩码
        Public Context As Integer      '网络IP地址标识,符合AddIPAddress和DeleteIPAddress函数中的网络接口关联参数。
    End Structure

    <StructLayout(LayoutKind.Sequential)>
    Public Structure FIXED_INFO
        <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=MAX_HOSTNAME_LEN + 4)> Public HostName As String    '本机名
        <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=MAX_DOMAIN_NAME_LEN + 4)> Public DomainName As String   '本机DNS域
        Public CurrentDnsServer As Integer        '保留,使用DnsServerList获取DNS服务器的IP地址
        Public DnsServerList As IP_ADDR_STRING '本机采用的DNS服务器链表
        Public NodeType As Integer     '节点类型,以下值:
        <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=MAX_SCOPE_ID_LEN + 4)> Public ScopeId As String     'DHCP范围名字
        Public EnableRouting As Integer   '本机能否路由
        Public EnableProxy As Integer '本机能否作为地址解析协议(ARP)代理
        Public EnableDns As Integer    '本机能否DNS查询
    End Structure

    'Private Declare Function GetNetworkParams Lib "IPHlpApi.dll" (FixedInfo As Any, pOutBufLen As Long) As Long
    Private Declare Function GetNetworkParams Lib "iphlpapi.dll" (ByRef FixedInfo As IntPtr, ByRef pOutBufLen As Integer) As Integer
    Private Declare Function GetNetworkParams Lib "iphlpapi.dll" (ByVal FixedInfo() As Byte, ByRef pOutBufLen As Integer) As Integer
    Private Declare Function GetNetworkParams Lib "iphlpapi.dll" (ByRef FixedInfo As FIXED_INFO, ByRef pOutBufLen As Integer) As Integer


    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim ptrFixedInfo As IntPtr = IntPtr.Zero
        Dim lenOutBufLen As Integer

        Dim returnValue As Integer

        returnValue = GetNetworkParams(ptrFixedInfo, lenOutBufLen)

        Dim bufFixedInfo(lenOutBufLen - 1) As Byte
        returnValue = GetNetworkParams(bufFixedInfo, lenOutBufLen)

        Dim pFixedInfo As IntPtr = Marshal.AllocHGlobal(lenOutBufLen)

        Dim FIXEDINFO As FIXED_INFO
        Dim sizeFIXEDINFO As Integer = Marshal.SizeOf(FIXEDINFO)
        Marshal.Copy(bufFixedInfo, 0, pFixedInfo, sizeFIXEDINFO)

        FIXEDINFO = Marshal.PtrToStructure(pFixedInfo, GetType(FIXED_INFO))

        TextBox1.Text = FixedInfo.HostName & vbCrLf

        TextBox1.Text &= "DNS地址:" & vbCrLf
        Dim ipaddrDNS As IntPtr = FixedInfo.DnsServerList

        Do While True

            If ipaddrDNS = IntPtr.Zero Then
                Exit Do
            End If

            Dim dns As New IP_ADDR_STRING
            dns = Marshal.PtrToStructure(ipaddrDNS, GetType(IP_ADDR_STRING))

            Dim ipaddrIpAddress As New String(dns.IpAddress)
            Dim ipmaskIpAddress As New String(dns.IpMask)
            TextBox1.Text &= ipaddrIpAddress.Replace(Chr(0), "") & " " & ipmaskIpAddress.Replace(Chr(0), "") & vbCrLf
            ipaddrDNS = dns.Next


    End Sub
End Class

?

由于.net平台下C#和vb.NET很相似,本文也可以为C#爱好者提供的参考。

学习更多vb.net知识,请参看?vb.net 教程 目录

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-03-24 00:56:55  更:2022-03-24 00:57:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 5:42:02-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码