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

📄 frmmain.frm

📁 此程序为标准的TCPIP网络编程
💻 FRM
📖 第 1 页 / 共 3 页
字号:
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
   End
   Begin VB.Frame Frame3 
      BackColor       =   &H00FFC0FF&
      Height          =   495
      Left            =   120
      TabIndex        =   22
      Top             =   3440
      Width           =   2055
      Begin VB.CommandButton CmdClearR 
         BackColor       =   &H00C0FFFF&
         Caption         =   "清空接收区"
         Height          =   240
         Left            =   360
         MaskColor       =   &H00FF0000&
         TabIndex        =   23
         Top             =   180
         UseMaskColor    =   -1  'True
         Width           =   1335
      End
   End
   Begin VB.Frame Frame4 
      BackColor       =   &H00FFC0C0&
      BorderStyle     =   0  'None
      Height          =   5655
      Left            =   2280
      TabIndex        =   4
      Top             =   0
      Width           =   6375
      Begin VB.CheckBox CheckSend 
         BackColor       =   &H00C0FFC0&
         Caption         =   "十六进制发送"
         ForeColor       =   &H000000FF&
         Height          =   195
         Left            =   4320
         TabIndex        =   32
         Top             =   4000
         Width           =   1935
      End
      Begin VB.TextBox TxtSend 
         Height          =   1455
         Left            =   0
         MultiLine       =   -1  'True
         ScrollBars      =   2  'Vertical
         TabIndex        =   19
         Top             =   4200
         Width           =   6375
      End
      Begin VB.TextBox TxtRecv 
         BackColor       =   &H00FFFFFF&
         ForeColor       =   &H00C00000&
         Height          =   3540
         Left            =   0
         MultiLine       =   -1  'True
         ScrollBars      =   2  'Vertical
         TabIndex        =   18
         Top             =   360
         Width           =   6375
      End
      Begin VB.CommandButton CmdKW 
         Caption         =   "Kaiwei"
         Height          =   255
         Left            =   3600
         TabIndex        =   6
         Top             =   3960
         Visible         =   0   'False
         Width           =   735
      End
      Begin VB.CheckBox CheckRecv 
         BackColor       =   &H00C0FFFF&
         Caption         =   "十六进制显示"
         ForeColor       =   &H00FF0000&
         Height          =   195
         Left            =   4320
         TabIndex        =   31
         Top             =   160
         Width           =   1935
      End
      Begin VB.Label LabelS 
         Alignment       =   2  'Center
         BackColor       =   &H00C0FFC0&
         BorderStyle     =   1  'Fixed Single
         Caption         =   "数据发送区  "
         ForeColor       =   &H000000FF&
         Height          =   255
         Left            =   0
         TabIndex        =   21
         Top             =   3960
         Width           =   6375
      End
      Begin VB.Label LabelR 
         Alignment       =   2  'Center
         BackColor       =   &H00C0FFFF&
         BorderStyle     =   1  'Fixed Single
         Caption         =   "数据接收区  "
         ForeColor       =   &H00FF0000&
         Height          =   255
         Left            =   0
         TabIndex        =   20
         Top             =   120
         Width           =   6375
      End
   End
   Begin VB.Menu file 
      Caption         =   "文件(&F)"
      Begin VB.Menu exit 
         Caption         =   "退出(&X)"
      End
   End
   Begin VB.Menu tool 
      Caption         =   "工具(&T)"
      Begin VB.Menu config 
         Caption         =   "设置N-COM(&C)"
         Enabled         =   0   'False
      End
      Begin VB.Menu sending 
         Caption         =   "发送文件(&S)"
      End
      Begin VB.Menu repeatSend 
         Caption         =   "循环发送(&R)"
         Begin VB.Menu strData 
            Caption         =   "字符串"
         End
         Begin VB.Menu fileData 
            Caption         =   "文件"
         End
      End
   End
   Begin VB.Menu CodeMode 
      Caption         =   "编码方式"
      Begin VB.Menu GBCode 
         Caption         =   "GB"
         Checked         =   -1  'True
      End
      Begin VB.Menu Unicode 
         Caption         =   "Unicode"
      End
   End
   Begin VB.Menu about 
      Caption         =   "关于(&A)"
   End
End
Attribute VB_Name = "frmMain"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit

Dim txtSendLen As Long '记录发送区的字符数

'初始化IP控件中的内容
Public Sub InitPara()
ipHost.Text = "192.168.1.24"

ipHost.Enabled = True
ComboPort.Enabled = True
ComboPortLocal.Enabled = False

End Sub

'重置socket
Private Sub WinsockReset()
If Winsock1.State <> 7 Then

    If OptionTCPC.Value = True Then
        StatusBar1.Panels(1).Text = "网络已断开 " & "请重新连接"
        CmdOpenPort.Caption = "连接网络"
    End If
    If OptionTCPS.Value = True Then
        StatusBar1.Panels(1).Text = "客户端已断开 " & "请重新监听"
        CmdOpenPort.Caption = "开始监听"
    End If
    If OptionUDP.Value = True Then
        StatusBar1.Panels(1).Text = "UDP已停止 " & "请重新开启"
        CmdOpenPort.Caption = "开启UDP"
    End If
    
    PicState.Picture = ImageList1.ListImages(1).Picture
    Timer2.Enabled = False
    repeatSend.Enabled = False
    sending.Enabled = False
    
    OptionTCPS.Enabled = True
    OptionTCPC.Enabled = True
    OptionUDP.Enabled = True
    
    Winsock1.Close
End If
End Sub

'根据编码方式,发送数据
Public Function WinsockSend(sendData As String) As Integer
    Dim sLen As Integer
    Dim sendByte() As Byte
    If CheckSend.Value Then '十六进制方式显示
        sendByte = StrToBytes(sendData, sLen)
        Winsock1.sendData sendByte
    Else
        sLen = ByteLen(TxtSend.Text)
        Select Case codeM
            Case codeGB 'GB编码方式
                Winsock1.sendData sendData
            Case codeUnicode 'Unicode编码方式
                sendByte = sendData
                Winsock1.sendData sendByte
        End Select
    End If
    WinsockSend = sLen
End Function

'根据编码方式,接收数据
Public Function WinsockRecv(ByVal bytesTotal As Long) As String
    Dim recvByte() As Byte
    Dim recvData As String
    Dim hexData As String
    Dim i
    
    If CheckRecv.Value Then '十六进制方式显示
        Winsock1.GetData recvByte
        For i = 0 To bytesTotal - 1 Step 1
            hexData = hexData & DeciToHex(recvByte(i)) & " "
        Next i
        recvData = recvData & hexData & "  (" & bytesTotal & ")" & Chr(13) & Chr(10)
    Else '文本方式显示
        Select Case codeM
            Case codeGB 'GB编码方式
                Winsock1.GetData recvData
            Case codeUnicode 'Unicode编码方式
                Winsock1.GetData recvByte
                recvData = recvByte
        End Select
    End If
    WinsockRecv = recvData
End Function

Public Sub OpenNetwork()
On Error GoTo ErrLine '处理意外错误

'TCP Client方式
If OptionTCPC.Value = True Then
    '如果网络已经连接,则先断开网络
    If Winsock1.State <> 0 And Winsock1.State <> 8 Then
        Winsock1.Close
        
        PicState.Picture = ImageList1.ListImages(1).Picture
        StatusBar1.Panels(1).Text = " 网络已断开  "
        
        Timer2.Enabled = False
        repeatSend.Enabled = False
        sending.Enabled = False
        CmdOpenPort.Caption = "连接网络"
        
        OptionTCPS.Enabled = True
        OptionTCPC.Enabled = True
        OptionUDP.Enabled = True
    Else
        Winsock1.Close
        
        Winsock1.RemoteHost = ipHost.Text 'ipHost.zone0Value & "." & ipHost.zone1Value & "." & ipHost.zone2Value & "." & ipHost.zone3Value
        Winsock1.RemotePort = ComboPort.Text
        Winsock1.Connect
        
        StatusBar1.Panels(1).Text = "正在连接到 " & Winsock1.RemoteHost & ":" & Winsock1.RemotePort
        CmdOpenPort.Caption = "断开网络"
        
        OptionTCPS.Enabled = False
        'OptionTCPC.Enabled = False
        OptionUDP.Enabled = False
    End If
End If

'TCP Server方式
If OptionTCPS.Value = True Then
    '如果网络已经在监听,则先停止监听
    If Winsock1.State <> 0 And Winsock1.State <> 8 Then
        Winsock1.Close
        
        PicState.Picture = ImageList1.ListImages(1).Picture
        StatusBar1.Panels(1).Text = " 网络已断开  "
        
        Timer2.Enabled = False
        repeatSend.Enabled = False
        sending.Enabled = False
        CmdOpenPort.Caption = "开始监听"
        
        OptionTCPS.Enabled = True
        OptionTCPC.Enabled = True
        OptionUDP.Enabled = True
    Else
        Winsock1.Close
        
        Winsock1.RemoteHost = ipHost.Text
        Winsock1.Bind ComboPortLocal.Text
        Winsock1.Listen
        
        StatusBar1.Panels(1).Text = "正在监听 " & Winsock1.LocalIP & ":" & Winsock1.LocalPort
        CmdOpenPort.Caption = "停止监听"
        
        'OptionTCPS.Enabled = False
        OptionTCPC.Enabled = False
        OptionUDP.Enabled = False
    End If
End If

'UDP方式
If OptionUDP.Value = True Then
    '如果网络已经在监听,则先停止监听
    If Winsock1.State <> 0 And Winsock1.State <> 8 Then
        Winsock1.Close
        
        PicState.Picture = ImageList1.ListImages(1).Picture
        StatusBar1.Panels(1).Text = " UDP通信停止  "
        
        Timer2.Enabled = False
        repeatSend.Enabled = False
        sending.Enabled = False
        CmdOpenPort.Caption = "开启UDP"
        
        OptionTCPS.Enabled = True
        OptionTCPC.Enabled = True
        OptionUDP.Enabled = True
        
        udpEnabled = False
    Else
        With Winsock1
            .Close
            .RemoteHost = ipHost.Text
            .RemotePort = ComboPort.Text
            .Bind ComboPortLocal.Text
        End With
        
        StatusBar1.Panels(1).Text = "UDP通信 " & Winsock1.RemoteHost & ":" & Winsock1.RemotePort
        CmdOpenPort.Caption = "关闭UDP"
        
        OptionTCPS.Enabled = False
        OptionTCPC.Enabled = False
        'OptionUDP.Enabled = False
        
        udpEnabled = True
        
        repeatSend.Enabled = True
        PicState.Picture = ImageList1.ListImages(2).Picture
        sending.Enabled = True
        Timer2.Enabled = False
    
    End If
End If

Exit Sub

ErrLine:
    If OptionTCPC.Value = True Then
        StatusBar1.Panels(1).Text = " 网络连接失败!  "
        MsgBox "请检查网络是否通畅,参数是否设置正确"
    End If
    
    If OptionTCPC.Value = True Then
        StatusBar1.Panels(1).Text = " 监听失败!  "
        MsgBox "请检查网络是否故障,参数是否设置正确"
    End If
    
    If OptionTCPC.Value = True Then
        StatusBar1.Panels(1).Text = " UDP开启失败!  "
        MsgBox "请检查网络是否故障,参数是否设置正确"
    End If

⌨️ 快捷键说明

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