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

📄 frmtcpclient.frm

📁 《计算机网络与数据通信实验教程》源代码, WinRAR自解压包。
💻 FRM
字号:
VERSION 5.00
Object = "{248DD890-BB45-11CF-9ABC-0080C7E7B78D}#1.0#0"; "mswinsck.ocx"
Object = "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0"; "mscomctl.ocx"
Begin VB.Form frmTCPClient 
   Caption         =   "TCP客户端"
   ClientHeight    =   6015
   ClientLeft      =   6510
   ClientTop       =   1035
   ClientWidth     =   6165
   LinkTopic       =   "Form1"
   MaxButton       =   0   'False
   MinButton       =   0   'False
   ScaleHeight     =   6015
   ScaleWidth      =   6165
   Begin VB.TextBox txtServerName 
      Height          =   270
      Left            =   1440
      TabIndex        =   17
      Top             =   232
      Width           =   1455
   End
   Begin VB.CommandButton cmdSendData 
      Caption         =   "发送信息"
      Height          =   375
      Left            =   720
      TabIndex        =   10
      Top             =   5160
      Width           =   1095
   End
   Begin MSComctlLib.StatusBar StatusBar1 
      Align           =   2  'Align Bottom
      Height          =   375
      Left            =   0
      TabIndex        =   9
      Top             =   5640
      Width           =   6165
      _ExtentX        =   10874
      _ExtentY        =   661
      _Version        =   393216
      BeginProperty Panels {8E3867A5-8586-11D1-B16A-00C0F0283628} 
         NumPanels       =   1
         BeginProperty Panel1 {8E3867AB-8586-11D1-B16A-00C0F0283628} 
            AutoSize        =   1
            Object.Width           =   10372
            Object.ToolTipText     =   "客户端状态"
         EndProperty
      EndProperty
   End
   Begin VB.Timer Timer1 
      Interval        =   500
      Left            =   2640
      Top             =   3720
   End
   Begin VB.CommandButton cmdExit 
      Caption         =   "退出"
      Height          =   375
      Left            =   4080
      TabIndex        =   8
      Top             =   5160
      Width           =   1215
   End
   Begin VB.CommandButton cmdDisconnect 
      Caption         =   "断开连接"
      Height          =   375
      Left            =   3840
      TabIndex        =   7
      Top             =   1320
      Width           =   1215
   End
   Begin VB.CommandButton cmdConnect 
      Caption         =   "连接"
      Height          =   375
      Left            =   720
      TabIndex        =   6
      Top             =   1320
      Width           =   1215
   End
   Begin VB.TextBox txtSend 
      Height          =   975
      Left            =   240
      MultiLine       =   -1  'True
      ScrollBars      =   3  'Both
      TabIndex        =   4
      Top             =   4080
      Width           =   5655
   End
   Begin VB.TextBox txtReceive 
      Height          =   1695
      Left            =   240
      Locked          =   -1  'True
      MultiLine       =   -1  'True
      ScrollBars      =   3  'Both
      TabIndex        =   2
      Top             =   2040
      Width           =   5655
   End
   Begin MSWinsockLib.Winsock sckTCPClient 
      Left            =   3120
      Top             =   3720
      _ExtentX        =   741
      _ExtentY        =   741
      _Version        =   393216
   End
   Begin VB.TextBox txtServerPort 
      Height          =   270
      Left            =   1440
      MaxLength       =   5
      TabIndex        =   1
      Top             =   592
      Width           =   1455
   End
   Begin VB.Label Label4 
      Caption         =   "服务器名:"
      Height          =   255
      Left            =   240
      TabIndex        =   20
      Top             =   240
      Width           =   1095
   End
   Begin VB.Label Label5 
      Caption         =   "本地主机名:"
      Height          =   255
      Left            =   3240
      TabIndex        =   19
      Top             =   240
      Width           =   1095
   End
   Begin VB.Label ClientName 
      Height          =   255
      Left            =   4320
      TabIndex        =   18
      Top             =   240
      Width           =   1335
   End
   Begin VB.Label ClientPort 
      Height          =   255
      Left            =   4320
      TabIndex        =   16
      Top             =   600
      Width           =   1575
   End
   Begin VB.Label ClientIP 
      Height          =   255
      Left            =   4320
      TabIndex        =   15
      Top             =   960
      Width           =   1455
   End
   Begin VB.Label ServerIP 
      Height          =   255
      Left            =   1440
      TabIndex        =   14
      Top             =   960
      Width           =   1575
   End
   Begin VB.Label Label8 
      Caption         =   "服务器IP:"
      Height          =   255
      Left            =   240
      TabIndex        =   13
      Top             =   960
      Width           =   1095
   End
   Begin VB.Label label7 
      Caption         =   "本地端口:"
      Height          =   255
      Left            =   3240
      TabIndex        =   12
      Top             =   600
      Width           =   1095
   End
   Begin VB.Label label6 
      Caption         =   "本地IP地址:"
      Height          =   255
      Left            =   3240
      TabIndex        =   11
      Top             =   960
      Width           =   1095
   End
   Begin VB.Label Label3 
      Caption         =   "发送信息:"
      Height          =   255
      Left            =   240
      TabIndex        =   5
      Top             =   3840
      Width           =   2175
   End
   Begin VB.Label Label2 
      Caption         =   "接收信息:"
      Height          =   255
      Left            =   240
      TabIndex        =   3
      Top             =   1800
      Width           =   1935
   End
   Begin VB.Label Label1 
      Alignment       =   1  'Right Justify
      Caption         =   "服务器端口:"
      Height          =   255
      Left            =   240
      TabIndex        =   0
      Top             =   600
      Width           =   1095
   End
End
Attribute VB_Name = "frmTCPClient"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
'定义表示是否建立连接的标志:ConnectedFlag
Private ConnectedFlag As Boolean



''连接'按钮的click事件子过程,当鼠标单击连接按钮时执行此过程
Private Sub cmdConnect_Click()
  On Error GoTo conncet_err
  '给Winsock控件分配端口(LocalPort属性),0表示随机分配
  sckTCPClient.LocalPort = 0
  '设置Winsock控件的远程主机名(RemoteHost属性,即服务器的主机名)
  sckTCPClient.RemoteHost = txtServerName.Text
  '设置Winsock控件的远程主机端口(RemotePort属性,即服务器所打开的端口)
  sckTCPClient.RemotePort = CLng(txtServerPort.Text)
  '调用Winsock控件的Connect方法
  sckTCPClient.Connect
  '使能'断开连接'按钮,禁止'连接'按钮
  cmdConnect.Enabled = False
  cmdDisconnect.Enabled = True
connect_exit:
  Exit Sub
conncet_err:
  Select Case Err
    Case 40014:   MsgBox "端口属性值无效", vbExclamation Or vbOKOnly Or vbMsgBoxSetForeground, "客户端警告"
    Case Else:  MsgBox Err.Description, , vbExclamation Or vbOKOnly Or vbMsgBoxSetForeground, "客户端警告"
  End Select
  Resume connect_exit
End Sub

''关闭连接'按钮的click事件子过程,当鼠标单击关闭连接按钮时执行此过程
Private Sub cmddisconnect_Click()
  '首先判断Winsock控件的状态
  '如果Winsock已经处于连接的状态,则关闭当前的TCP连接
  '置连接标志为“否”,使能'连接'按钮,禁止'断开连接'按钮和'发送信息'按钮
  If sckTCPClient.State = sckConnected Then
   sckTCPClient.Close
   ConnectedFlag = False
   cmdDisconnect.Enabled = False
   cmdConnect.Enabled = True
   cmdSendData.Enabled = False
   ServerIP.Caption = ""
   ClientPort.Caption = ""
  End If
End Sub

''退出'按钮的click事件子过程,当鼠标单击退出按钮时执行此过程
Private Sub cmdExit_Click()
  '卸载当前窗体
  Unload Me
End Sub
''发送信息'按钮的click事件子过程,当鼠标单击发送信息按钮时执行此过程
Private Sub cmdSendData_Click()
'如果发送信息的文本框中的内容为'空',则退出此过程
If Trim(txtSend.Text) = "" Then
    txtSend.Text = ""
    Exit Sub
End If
'定义临时变量data
Dim data As String
    ' 打开错误处理程序
    On Local Error GoTo SendData_error
    '调用Winsock控件的senddata方法,将发送信息文本框中的信息发送出去
    sckTCPClient.SendData txtSend.Text
    If Len(txtReceive.Text) Then
      data = vbCrLf & "客户端信息:" & txtSend.Text
    Else
      data = "客户端信息:" & txtSend.Text
    End If
    txtReceive.SelStart = Len(txtReceive.Text)
    txtReceive.SelText = data
    txtReceive.SelStart = Len(txtReceive.Text)
    txtSend.Text = ""
SendData_exit:
    Exit Sub
'错误处理程序
SendData_error:
'检查错误代号,显示错误信息
    Select Case Err
    Case sckBadState:
        MsgBox Err.Description & vbCrLf & "未连接到服务器", vbExclamation Or vbOKOnly, "客户端警告"
    Case Else:
        MsgBox Err.Description & vbExclamation Or vbOKOnly, "客户端警告"
    End Select
    '在错误处理程序结束后,恢复原有的运行,返回到产生错误的语句
    Resume SendData_exit
End Sub
'窗体装载子过程,当窗体装载时调用此过程
Private Sub Form_Load()
    '使能'连接'按钮,禁止'断开连接'按钮和'发送信息'按钮
    cmdConnect.Enabled = True
    cmdDisconnect.Enabled = False
    cmdSendData.Enabled = False
    '初始化服务器名为'compouter',端口为“6000”,用户可以在此进行修改
    txtServerName.Text = "computer"
    txtServerPort.Text = "6000"
    ConnectedFlag = False
    ClientName.Caption = sckTCPClient.LocalHostName
    ClientIP.Caption = sckTCPClient.LocalIP
End Sub
'窗体卸载子过程,当窗体卸载时调用此过程
Private Sub Form_Unload(Cancel As Integer)
   '关闭Winsock控件
  sckTCPClient.Close
End Sub

'Winsock控件关闭事件子过程,当远程计算机关闭连接时调用过程
Private Sub sckTCPClient_Close()
'如果已经处在连接的状态,则关闭连接,同时提示信息
 If ConnectedFlag = True Then
    If sckTCPClient.State = sckClosing Then
       ConnectedFlag = False
       MsgBox "到服务器的连接意外终止。", vbExclamation Or vbOKOnly, "客户端警告"
       sckTCPClient.Close
       cmdDisconnect.Enabled = False
       cmdConnect.Enabled = True
       cmdSendData.Enabled = False
       ClientPort.Caption = ""
       ServerIP.Caption = ""
    End If
 End If
End Sub

Private Sub sckTCPClient_Connect()
   If ConnectedFlag = False Then
      If sckTCPClient.State = sckConnected Then
         sckTCPClient.SendData sckTCPClient.LocalHostName
         ClientPort.Caption = sckTCPClient.LocalPort
         ServerIP.Caption = sckTCPClient.RemoteHostIP
      End If
      txtSend.SetFocus
   End If
End Sub

Private Sub sckTCPclient_DataArrival(ByVal bytesTotal As Long)
 Dim data As String
     If ConnectedFlag = True Then
        sckTCPClient.GetData data
        If Len(txtReceive.Text) Then
           data = vbCrLf & "服务器信息:" & data
        Else
           data = "服务器信息:" & data
        End If
        txtReceive.SelStart = Len(txtReceive.Text)
        txtReceive.SelText = data
        txtReceive.SelStart = Len(txtReceive.Text)
     Else
        ConnectedFlag = True
        sckTCPClient.GetData data
        txtServerName.Text = data
        txtSend.SetFocus
        cmdSendData.Enabled = True
     End If
End Sub
'Winsock控件的错误事件子过程
Private Sub sckTCPClient_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
    '提示错误信息
    Select Case Number
      Case 10061
         MsgBox "错误: " & Number & vbCrLf & Description & vbCrLf & vbCrLf & "服务器端未运行或未建立连接。", vbExclamation Or vbOKOnly Or vbMsgBoxSetForeground, "客户端警告"
      Case 10049
         MsgBox "错误: " & Number & vbCrLf & Description & vbCrLf & vbCrLf & "服务器端口属性值无效", vbExclamation Or vbOKOnly Or vbMsgBoxSetForeground, "客户端警告"
      Case Else
         MsgBox "错误: " & Number & vbCrLf & Description, vbOKOnly Or vbExclamation Or vbMsgBoxSetForeground, "客户端警告"
   End Select
   '关闭Winsock控件
   sckTCPClient.Close
   cmdConnect.Enabled = True
   cmdDisconnect.Enabled = False
End Sub


'Timer的Timer事件子过程
Private Sub Timer1_Timer()
    '监控客户端状态,并在状态栏中显示
    Select Case sckTCPClient.State
        Case 0: StatusBar1.Panels(1) = "客户端已关闭"
        Case 6: StatusBar1.Panels(1) = "正在连接服务器"
        Case 7: StatusBar1.Panels(1) = "已连接到服务器"
    End Select
End Sub

 

⌨️ 快捷键说明

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