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

📄 udp代码清单.txt

📁 1.打开文件。在计算机上运行可执行程序。 2.登录。在登录对话框中输入用户名
💻 TXT
字号:
Private Const SOCKET_ERROR As Long = -1
Private Const MAX_WSADescription = 256
Private Const MAX_WSASYSStatus = 128
Private Const ERROR_SUCCESS       As Long = 0
Private Const WS_VERSION_REQD     As Long = &H101
Private Const MIN_SOCKETS_REQD    As Long = 1
Private Const WS_VERSION_MAJOR    As Long = WS_VERSION_REQD \ &H100 And &HFF&
Private Const WS_VERSION_MINOR    As Long = WS_VERSION_REQD And &HFF&

Private Type HOSTENT
    hName      As Long
    hAliases   As Long
    hAddrType  As Integer
    hLen       As Integer
    hAddrList  As Long
End Type

Private Type WSADATA
    wVersion      As Integer
    wHighVersion  As Integer
    szDescription(0 To MAX_WSADescription)   As Byte
    szSystemStatus(0 To MAX_WSASYSStatus)    As Byte
    wMaxSockets   As Integer
    wMaxUDPDG     As Integer
    dwVendorInfo  As Long
End Type

Private Declare Function gethostname Lib "WSOCK32.DLL" (ByVal szHost As String, ByVal dwHostLen As Long) As Long
Private Declare Function gethostbyname Lib "WSOCK32.DLL" (ByVal szHost As String) As Long
Private Declare Function WSAStartup Lib "WSOCK32.DLL" (ByVal wVersionRequired As Long, lpWSADATA As WSADATA) As Long
Private Declare Function WSAGetLastError Lib "WSOCK32.DLL" () As Long
Private Declare Function WSACleanup Lib "WSOCK32.DLL" () As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (hpvDest As Any, ByVal hpvSource As Long, ByVal cbCopy As Long)

Private Function GetIPAddress(Optional sHost As String) As String
'返回给定机器名的Ip地址,机器名为空时返回本机Ip地址
    Dim sHostName   As String * 256
    Dim lpHost      As Long
    Dim HOST        As HOSTENT
    Dim dwIPAddr    As Long
    Dim tmpIPAddr() As Byte
    Dim i           As Integer
    Dim sIPAddr     As String
    Dim werr        As Long

    If Not SocketsInitialize() Then
        GetIPAddress = ""
        Exit Function
    End If
    
    If sHost = "" Then
        If gethostname(sHostName, 256) = SOCKET_ERROR Then
            werr = WSAGetLastError()
            GetIPAddress = ""
            SocketsCleanup
            Exit Function
        End If

        sHostName = Trim$(sHostName)
    Else
        sHostName = Trim$(sHost) & Chr$(0)
    End If
    
    lpHost = gethostbyname(sHostName)

    If lpHost = 0 Then
        werr = WSAGetLastError()
        GetIPAddress = ""
        SocketsCleanup
        Exit Function
    End If

    CopyMemory HOST, lpHost, Len(HOST)
    CopyMemory dwIPAddr, HOST.hAddrList, 4

    ReDim tmpIPAddr(1 To HOST.hLen)
    CopyMemory tmpIPAddr(1), dwIPAddr, HOST.hLen

    For i = 1 To HOST.hLen
        sIPAddr = sIPAddr & tmpIPAddr(i) & "."
    Next

    GetIPAddress = Mid$(sIPAddr, 1, Len(sIPAddr) - 1)
    SocketsCleanup
End Function

Private Function SocketsInitialize(Optional sErr As String) As Boolean
    Dim WSAD As WSADATA, sLoByte As String, sHiByte As String
    If WSAStartup(WS_VERSION_REQD, WSAD) <> ERROR_SUCCESS Then
        sErr = "The 32-bit Windows Socket is not responding."
        SocketsInitialize = False
        Exit Function
    End If

    If WSAD.wMaxSockets < MIN_SOCKETS_REQD Then
        sErr = "This application requires a minimum of " & _
                CStr(MIN_SOCKETS_REQD) & " supported sockets."

        SocketsInitialize = False
        Exit Function
    End If


    If LoByte(WSAD.wVersion) < WS_VERSION_MAJOR Or _
            (LoByte(WSAD.wVersion) = WS_VERSION_MAJOR And _
            HiByte(WSAD.wVersion) < WS_VERSION_MINOR) Then

        sHiByte = CStr(HiByte(WSAD.wVersion))
        sLoByte = CStr(LoByte(WSAD.wVersion))

        sErr = "Sockets version " & sLoByte & "." & sHiByte & _
                " is not supported by 32-bit Windows Sockets."

        SocketsInitialize = False
        Exit Function
    End If
    SocketsInitialize = True
End Function

Private Sub SocketsCleanup()
    If WSACleanup() <> ERROR_SUCCESS Then
        App.LogEvent "Socket error occurred in Cleanup.", vbLogEventTypeError
    End If
End Sub

Private Function HiByte(ByVal wParam As Integer)
    HiByte = wParam \ &H1 And &HFF&
End Function

Private Function LoByte(ByVal wParam As Integer)
    LoByte = wParam And &HFF&
End Function


'搜索网络计算机
Private Sub Command1_Click()
  Call GetNetComputerName(List1)
End Sub

Private Sub Command2_Click()
computername = List1.Text
On Error Resume Next
Screen.MousePointer = vbHourglass
ipname = GetIPAddress(computername)
Screen.MousePointer = vbDefault
If form1k = False Then
 Form2.Show
ElseIf form2k = False Then
Form4.Show
ElseIf form3k = False Then
Form5.Show
ElseIf form4k = False Then
Form6.Show
ElseIf form5k = False Then
Form7.Show
Else
   MsgBox "已经是最多用户了!“"
End If
End Sub

Private Sub Command3_Click()
Unload Me
End Sub

Private Sub Form_Activate()
  Me.Refresh
  Call Command1_Click
End Sub






Private Sub Command1_Click()
xingming = Text1.Text + "[" + Winsock1.LocalHostName + "]" + "说:"
Form3.Hide
MsgBox "欢迎进入!"
Form1.Show
End Sub

Private Sub Form_Load()
form1k = False
form2k = False
form3k = False
form4k = False
form5k = False
End Sub






Option Explicit


Private Sub Command2_Click()
On Error GoTo ErrorPro
Dim s As String
s = xingming + Text5.Text
Winsock1.SendData s
Text4.Text = Text4.Text + Chr$(13) + Chr$(10) + "我说:" + Text5.Text
Text5.Text = ""
Exit Sub
ErrorPro:
    MsgBox "网络出错,请重新连接!"
    End
End Sub

Private Sub Command3_Click()
Unload Me
End Sub

Private Sub Form_Load()
Dim i As Integer
Dim j As Integer
Dim ss As String
Dim s1 As String
Dim s2 As String
Dim melocalport As String
Dim tlocalport As String
Label2.Caption = Winsock1.LocalIP
Label7.Caption = Winsock1.LocalHostName
'求本地端口
i = Len(Trim(Label2.Caption))
For j = i To j - 3 Step -1
 ss = Mid(Trim(Label2.Caption), j, 1)
 If ss <> "." Then
  s1 = ss + s1
 Else
   Exit For
 End If
Next j
melocalport = 1000 + Val(s1)
Text1.Text = Trim(Str(melocalport))
'求远程端口
i = Len(Trim(ipname))
For j = i To j - 3 Step -1
 ss = Mid(Trim(ipname), j, 1)
 If ss <> "." Then
  s2 = ss + s2
 Else
  Exit For
 End If
Next j
tlocalport = 1000 + Val(s2)
Text2.Text = Trim(Str(tlocalport))
Text4.Text = Left(Trim(xingming), Trim(Len(xingming) - 2)) + "-----" + "welcome!"
'联系
Winsock1.LocalPort = 2002
Winsock1.RemotePort = Text2.Text
On Error GoTo ErrorPro1
ErrorPro1:
  Winsock1.RemoteHost = 2000
  On Error GoTo ErrorPro2
  Winsock1.RemoteHost = ipname
  Winsock1.Bind 2000
  form2k = True
Exit Sub
ErrorPro2:
  Winsock1.RemoteHost = 20001
  On Error GoTo ErrorPro3
  Winsock1.RemoteHost = ipname
  Winsock1.Bind 2001
  form2k = True
Exit Sub
ErrorPro3:
  Winsock1.RemoteHost = 20002
  On Error GoTo ErrorPro4
  Winsock1.RemoteHost = ipname
  Winsock1.Bind 2002
  form2k = True
Exit Sub
ErrorPro4:
  Winsock1.RemoteHost = 20003
  On Error GoTo ErrorPro2
  Winsock1.RemoteHost = ipname
  Winsock1.Bind 2003
  form2k = True
Exit Sub

End Sub


Private Sub Form_Unload(Cancel As Integer)
form4k = False
End Sub

Private Sub Text5_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
On Error GoTo ErrorPro
Dim s As String
s = xingming + Text5.Text
Winsock1.SendData s
Text4.Text = Text4.Text + Chr$(13) + Chr$(10) + "我说:" + Text5.Text
Text5.Text = ""
Exit Sub
ErrorPro:
    MsgBox "网络出错,请重新连接!"
    End
End If
End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
On Error GoTo ErrorPro
Dim receviedata As String
Winsock1.GetData receviedata

Text4.Text = Text4.Text + Chr$(13) + Chr$(10) + receviedata
Exit Sub
ErrorPro:
    MsgBox "网络出错,请重新连接!"
    End

End Sub



⌨️ 快捷键说明

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