⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 form1.frm

📁 windows 网络编程。pdf文档
💻 FRM
📖 第 1 页 / 共 2 页
字号:
VERSION 5.00
Begin VB.Form Form1 
   Caption         =   "WSAEnumProtocols Output"
   ClientHeight    =   7725
   ClientLeft      =   60
   ClientTop       =   345
   ClientWidth     =   9795
   LinkTopic       =   "Form1"
   ScaleHeight     =   7725
   ScaleWidth      =   9795
   StartUpPosition =   3  'Windows Default
   Begin VB.ListBox List1 
      BeginProperty Font 
         Name            =   "Fixedsys"
         Size            =   9
         Charset         =   0
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      Height          =   7260
      Left            =   240
      TabIndex        =   0
      Top             =   120
      Width           =   9375
   End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
'
' Project: enumvb
'
' Description:
'    This project enumerates all of the Winsock catalog entries and
'    displays them in a list box. This is done using the WSAEnumProtocols
'    API.
'

Option Explicit

Dim EnumStrAll As String

'
' Subroutine: DoEnum
'
' Description:
'    This routine initializes Winsock and then calls WSAEnumProtocols.
'    This first call to this function is done to obtain the size of
'    the buffer required for the call to complete successfully. We
'    then allocate a buffer of that size and call the function again.
'
Private Sub DoEnum()
    Dim wsadStartupData As WSADataType
    Dim dwRet As Long, dwBufLen As Long, dwErr As Long
    Dim pProtoBuffer As Long
    Dim i As Long
    
    dwRet = WSAStartup(&H202, wsadStartupData)
    If dwRet <> 0 Then
        MsgBox "Error WSAStartup: " & Err.LastDllError
        Exit Sub
    End If
    '
    ' Call the function with NULL and 0 in order to obtain the
    '  necessary buffer size.
    '
    dwBufLen = 0
    dwRet = WSAEnumProtocols(0, 0, dwBufLen)
    If dwRet = SOCKET_ERROR Then 'it's going to happ as buffer is 0
        dwErr = Err.LastDllError
        If dwErr <> WSAENOBUFS And dwErr <> 0 Then
            MsgBox "Error WSAEnumProtocols: " & dwErr
            WSACleanup
            Exit Sub
        End If
        '
        ' Allocate the buffer and call it again.
        '
        pProtoBuffer = GlobalAlloc(GMEM_FIXED, dwBufLen)
        dwRet = WSAEnumProtocols(0, pProtoBuffer, dwBufLen)
        If dwRet = SOCKET_ERROR Then
            dwErr = Err.LastDllError
            MsgBox "Error WSAEnumPrtocols: " & dwErr
            GlobalFree pProtoBuffer
            WSACleanup
            Exit Sub
        End If
        
        List1.AddItem "Num Protocols found: " & dwRet
        
        Dim pWorkPointer As Long
        '
        ' Print the info
        '
        For i = 0 To dwRet - 1
            PrintProtocolInfo pProtoBuffer, i
        Next i
    End If
    GlobalFree pProtoBuffer
    WSACleanup
End Sub

'
' Subroutine: PrintProtocolInfo
'
' Description:
'    This function is responsible for taking each WSAPROTOCOL_INFO
'    structure returned from WSAEnumProtocols and printing the
'    contained information to a window in human readable form.
'
Sub PrintProtocolInfo(pProtoBuffer As Long, index As Long)
    Dim wsapi As WSAPROTOCOL_INFO
    CopyMemory2 wsapi, pProtoBuffer + index * LenB(wsapi), LenB(wsapi)
    Dim szProtocol As String
    szProtocol = String(256, 0)
    lstrcpy szProtocol, wsapi.szProtocol(0)
    szProtocol = Trim(szProtocol)
    List1.AddItem ""
    List1.AddItem "Protocol: " & szProtocol
    EnumStrAll = "           Address Family: "
    
    Select Case (wsapi.iAddressFamily)
        Case AF_INET:
            EnumStrAll = EnumStrAll & "AF_INET"
            List1.AddItem EnumStrAll
            EnumStrAll = "                 Protocol: "
            Select Case (wsapi.iProtocol)
                Case IPPROTO_IP:
                    EnumStrAll = EnumStrAll & "IPROTO_IP"
                Case IPPROTO_ICMP:
                    EnumStrAll = EnumStrAll & "IPROTO_ICMP"
                Case IPPROTO_IGMP:
                    EnumStrAll = EnumStrAll & "IPROTO_IGMP"
                Case IPPROTO_GGP:
                    EnumStrAll = EnumStrAll & "IPROTO_GGP"
                Case IPPROTO_TCP:
                    EnumStrAll = EnumStrAll & "IPROTO_TCP"
                Case IPPROTO_PUP:
                    EnumStrAll = EnumStrAll & "IPROTO_PUP"
                Case IPPROTO_UDP:
                    EnumStrAll = EnumStrAll & "IPROTO_UDP"
                Case IPPROTO_IDP:
                    EnumStrAll = EnumStrAll & "IPROTO_IDP"
                Case IPPROTO_ND:
                    EnumStrAll = EnumStrAll & "IPROTO_ND"
                Case IPPROTO_RAW:
                    EnumStrAll = EnumStrAll & "IPROTO_RAW"
            End Select
            List1.AddItem EnumStrAll
        Case AF_INET6:
            EnumStrAll = EnumStrAll & "AF_INET6"
            List1.AddItem EnumStrAll
            EnumStrAll = "                 Protocol: "
            Select Case (wsapi.iProtocol)
                Case IPPROTO_IP:
                    EnumStrAll = EnumStrAll & "IPROTO_IP"
               Case IPPROTO_ICMP:
                    EnumStrAll = EnumStrAll & "IPROTO_ICMP"
                Case IPPROTO_IGMP:
                    EnumStrAll = EnumStrAll & "IPROTO_IGMP"
                Case IPPROTO_GGP:
                    EnumStrAll = EnumStrAll & "IPROTO_GGP"
                Case IPPROTO_TCP:
                    EnumStrAll = EnumStrAll & "IPROTO_TCP"
                Case IPPROTO_PUP:
                    EnumStrAll = EnumStrAll & "IPROTO_PUP"
                Case IPPROTO_UDP:
                    EnumStrAll = EnumStrAll & "IPROTO_UDP"
                Case IPPROTO_IDP:
                    EnumStrAll = EnumStrAll & "IPROTO_IDP"
                Case IPPROTO_ND:
                    EnumStrAll = EnumStrAll & "IPROTO_ND"
                Case IPPROTO_RAW:
                    EnumStrAll = EnumStrAll & "IPROTO_RAW"
            End Select
            List1.AddItem EnumStrAll
        Case AF_UNSPEC:
            EnumStrAll = EnumStrAll & "AF_UNSPEC"
            List1.AddItem EnumStrAll
            EnumStrAll = "                 Protocol: UNKNOWN: " & wsapi.iProtocol
        Case AF_UNIX:
            EnumStrAll = EnumStrAll & "AF_UNIX"
            List1.AddItem EnumStrAll
            EnumStrAll = "                 Protocol: UNKNOWN: " & wsapi.iProtocol
        Case AF_IMPLINK:
            EnumStrAll = EnumStrAll & "AF_IMPLINK"
            List1.AddItem EnumStrAll
            EnumStrAll = "                 Protocol: UNKNOWN: " & wsapi.iProtocol
        Case AF_PUP:
            EnumStrAll = EnumStrAll & "AF_PUP"
            List1.AddItem EnumStrAll
            EnumStrAll = "                 Protocol: UNKNOWN: " & wsapi.iProtocol
        Case AF_CHAOS:
            EnumStrAll = EnumStrAll & "AF_CHAOS"
            List1.AddItem EnumStrAll
            EnumStrAll = "                 Protocol: UNKNOWN: " & wsapi.iProtocol
        Case AF_NS:
            EnumStrAll = EnumStrAll & "AF_NS or AF_IPX"
            List1.AddItem EnumStrAll
            EnumStrAll = "                 Protocol: "
            Select Case wsapi.iProtocol
                Case NSPROTO_IPX:
                    EnumStrAll = EnumStrAll & "NSPROTO_IPX"
                Case NSPROTO_SPX:
                    EnumStrAll = EnumStrAll & "NSPROTO_SPX"
               Case NSPROTO_SPXII:
                    EnumStrAll = EnumStrAll & "NSPROTO_SPXII"
           End Select
           List1.AddItem EnumStrAll
        Case AF_ISO:
            EnumStrAll = EnumStrAll & "AF_ISO or AF_OSI"
            List1.AddItem EnumStrAll
            EnumStrAll = "                 Protocol: UNKNOWN: " & wsapi.iProtocol
        Case AF_ECMA:
            EnumStrAll = EnumStrAll & "AF_ECMA"
            List1.AddItem EnumStrAll
            EnumStrAll = "                 Protocol: UNKNOWN: " & wsapi.iProtocol
        Case AF_DATAKIT:
            EnumStrAll = EnumStrAll & "AF_DATAKIT"
            List1.AddItem EnumStrAll
            EnumStrAll = "                 Protocol: UNKNOWN: " & wsapi.iProtocol
        Case AF_CCITT:
            EnumStrAll = EnumStrAll & "AF_CCITT"
            List1.AddItem EnumStrAll
            EnumStrAll = "                 Protocol: UNKNOWN: " & wsapi.iProtocol
        Case AF_SNA:
            EnumStrAll = EnumStrAll & "AF_SNA"
            List1.AddItem EnumStrAll
            EnumStrAll = "                 Protocol: UNKNOWN: " & wsapi.iProtocol
        Case AF_DECnet:
            EnumStrAll = EnumStrAll & "AF_DECnet"
            List1.AddItem EnumStrAll
            EnumStrAll = "                 Protocol: UNKNOWN: " & wsapi.iProtocol
        Case AF_DLI:
            EnumStrAll = EnumStrAll & "AF_DLI"
            List1.AddItem EnumStrAll
            EnumStrAll = "                 Protocol: UNKNOWN: " & wsapi.iProtocol
        Case AF_LAT:
            EnumStrAll = EnumStrAll & "AF_LAT"
            List1.AddItem EnumStrAll
            EnumStrAll = "                 Protocol: UNKNOWN: " & wsapi.iProtocol
        Case AF_HYLINK:
            EnumStrAll = EnumStrAll & "AF_HYLINK"
            List1.AddItem EnumStrAll
            EnumStrAll = "                 Protocol: UNKNOWN: " & wsapi.iProtocol
        Case AF_APPLETALK:
            EnumStrAll = EnumStrAll & "AF_APPLETALK"
            List1.AddItem EnumStrAll
            EnumStrAll = "                 Protocol: "
            Select Case (wsapi.iProtocol)
                Case DDPPROTO_RTMP:
                    EnumStrAll = EnumStrAll & "DDPPROTO_RTMP"
                Case DDPPROTO_NBP:
                    EnumStrAll = EnumStrAll & "DDPPROTO_NBP"
                Case DDPPROTO_ATP:
                    EnumStrAll = EnumStrAll & "DDPROTO_ATP"
                Case DDPPROTO_AEP:
                    EnumStrAll = EnumStrAll & "DDPPROTO_AEP"
                Case DDPPROTO_RTMPRQ:
                    EnumStrAll = EnumStrAll & "DDPPROTO_RTMPRQ"
                Case DDPPROTO_ZIP:
                    EnumStrAll = EnumStrAll & "DDPPROTO_ZIP"
                Case DDPPROTO_ADSP:
                    EnumStrAll = EnumStrAll & "DDPPROTO_ADSP"
                Case ATPROTO_ADSP:
                    EnumStrAll = EnumStrAll & "ATPROTO_ADSP"
                Case ATPROTO_ATP:
                    EnumStrAll = EnumStrAll & "ATPROTO_ATP"
                Case ATPROTO_ASP:
                    EnumStrAll = EnumStrAll & "ATPROTO_ASP"
                Case ATPROTO_PAP:
                    EnumStrAll = EnumStrAll & "ATPROTO_PAP"
            End Select
            List1.AddItem EnumStrAll
        Case AF_NETBIOS:
            EnumStrAll = EnumStrAll & "AF_NETBIOS"
            List1.AddItem EnumStrAll
            EnumStrAll = "                 Protocol: "
            If wsapi.iProtocol = &H80000000 Then
                EnumStrAll = EnumStrAll & "NetBIOS LANA " & 0
                List1.AddItem EnumStrAll
            Else
                EnumStrAll = EnumStrAll & "NetBIOS LANA " & Abs(wsapi.iProtocol)
                List1.AddItem EnumStrAll
            End If
        Case AF_VOICEVIEW:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -