代码如下:
Private Sub cmdFs_Click()
If XZ = 1 Then
If txtFs.Text = "" Then
MsgBox "请输入信息......", vbCritical, "提示"
Else
On Error Resume Next
Wsk1.SendData txtFs.Text
txtJs.Text = vbCrLf & txtJs.Text & "我说:" & txtFs.Text
txtFs.Text = ""
If Err Then
End ' handle the error here
End If
End If
Else
Wsk2.RemoteHost = frmJm.txtIP.Text
Wsk2.RemotePort = frmJm.txtYDK.Text
'Wsk2.Bind Wsk2.LocalPort
If txtFs.Text = "" Then
MsgBox "请输入信息......", vbCritical, "提示"
Else
On Error Resume Next
Wsk2.SendData txtFs.Text
txtJs.Text = txtJs.Text + vbCrLf + CStr(Date) + Chr(32) + CStr(Time$()) + vbCrLf & TxtNc & ":" & txtFs.Text
txtFs.Text = ""
If Err Then
End ' handle the error here
End If
End If
End If
End Sub
Private Sub Form_Unload(Cancel As Integer)
If sckconnect.State <> sckClosed Then
sckconnect.Close
End If
End SubPrivate Sub FWD_Click()
XZ = 1
frmJm.Show
frmJm.Caption = "服务端连接"
frmJm.Label1.Caption = "服务端IP"
frmJm.Label2.Visible = False
frmJm.txtYDK.Visible = False
Wsk1.Protocol = sckTCPProtocol
End SubPrivate Sub KHD_Click()
XZ = 2
frmJm.Show
frmJm.Caption = "客户端连接"
frmJm.Label1.Caption = "服务端IP"
Wsk2.Protocol = sckUDPProtocol
End SubPrivate Sub TC_Click()
If Wsk1.State <> sckClosed Then
Wsk1.Close
Wsk1.Accept requestID
End If
End
End SubPrivate Sub Timer1_Timer()
Select Case Wsk1.State
Case 0
Label1.Caption = "关闭"
Case 1
Label1.Caption = "打开"
Case 2
Label1.Caption = "侦听"
Case 5
Label1.Caption = "以识别主机"
Case 6
Label1.Caption = "正在连接 "
Case 7
Label1.Caption = "已连接"
Case 9
Label1.Caption = "错误"
End Select
End SubPrivate Sub wsk1_ConnectionRequest(ByVal requestID As Long)
If Wsk1.State <> sckClosed Then
Wsk1.Close
Wsk1.Accept requestID
End If
End SubPrivate Sub wsk1_DataArrival(ByVal bytesTotal As Long)
Dim Js As String
Wsk1.GetData Js, vbString
txtJs.Text = txtJs.Text & "对方说:" & Js & vbCrLf
End Sub
Private Sub wsk2_DataArrival(ByVal bytesTotal As Long)
Dim Js As String
Wsk2.GetData Js, vbString
txtJs.Text = txtJs.Text & "对方说:" & Js & vbCrLf
End Sub
--------------
程序图片:--------------------------------------------------------------------------------------------------------------
搞不清楚到底是在那里错拉 老是在发送信息那里卡住,连接没有问题 很晕
Private Sub cmdFs_Click()
If XZ = 1 Then
If txtFs.Text = "" Then
MsgBox "请输入信息......", vbCritical, "提示"
Else
On Error Resume Next
Wsk1.SendData txtFs.Text
txtJs.Text = vbCrLf & txtJs.Text & "我说:" & txtFs.Text
txtFs.Text = ""
If Err Then
End ' handle the error here
End If
End If
Else
Wsk2.RemoteHost = frmJm.txtIP.Text
Wsk2.RemotePort = frmJm.txtYDK.Text
'Wsk2.Bind Wsk2.LocalPort
If txtFs.Text = "" Then
MsgBox "请输入信息......", vbCritical, "提示"
Else
On Error Resume Next
Wsk2.SendData txtFs.Text
txtJs.Text = txtJs.Text + vbCrLf + CStr(Date) + Chr(32) + CStr(Time$()) + vbCrLf & TxtNc & ":" & txtFs.Text
txtFs.Text = ""
If Err Then
End ' handle the error here
End If
End If
End If
End Sub
Private Sub Form_Unload(Cancel As Integer)
If sckconnect.State <> sckClosed Then
sckconnect.Close
End If
End SubPrivate Sub FWD_Click()
XZ = 1
frmJm.Show
frmJm.Caption = "服务端连接"
frmJm.Label1.Caption = "服务端IP"
frmJm.Label2.Visible = False
frmJm.txtYDK.Visible = False
Wsk1.Protocol = sckTCPProtocol
End SubPrivate Sub KHD_Click()
XZ = 2
frmJm.Show
frmJm.Caption = "客户端连接"
frmJm.Label1.Caption = "服务端IP"
Wsk2.Protocol = sckUDPProtocol
End SubPrivate Sub TC_Click()
If Wsk1.State <> sckClosed Then
Wsk1.Close
Wsk1.Accept requestID
End If
End
End SubPrivate Sub Timer1_Timer()
Select Case Wsk1.State
Case 0
Label1.Caption = "关闭"
Case 1
Label1.Caption = "打开"
Case 2
Label1.Caption = "侦听"
Case 5
Label1.Caption = "以识别主机"
Case 6
Label1.Caption = "正在连接 "
Case 7
Label1.Caption = "已连接"
Case 9
Label1.Caption = "错误"
End Select
End SubPrivate Sub wsk1_ConnectionRequest(ByVal requestID As Long)
If Wsk1.State <> sckClosed Then
Wsk1.Close
Wsk1.Accept requestID
End If
End SubPrivate Sub wsk1_DataArrival(ByVal bytesTotal As Long)
Dim Js As String
Wsk1.GetData Js, vbString
txtJs.Text = txtJs.Text & "对方说:" & Js & vbCrLf
End Sub
Private Sub wsk2_DataArrival(ByVal bytesTotal As Long)
Dim Js As String
Wsk2.GetData Js, vbString
txtJs.Text = txtJs.Text & "对方说:" & Js & vbCrLf
End Sub
--------------
程序图片:--------------------------------------------------------------------------------------------------------------
搞不清楚到底是在那里错拉 老是在发送信息那里卡住,连接没有问题 很晕
Private Sub cmdFs_Click()
If XZ = 1 Then
If txtFs.Text = "" Then
MsgBox "请输入信息......", vbCritical, "提示"
Else
Wsk1.SendData txtFs.Text
txtJs.Text = txtJs.Text + vbCrLf + CStr(Date) + Chr(32) + CStr(Time$()) + vbCrLf & TxtNc & ":" & txtFs.Text
txtFs.Text = ""
End If
Else
Wsk2.RemoteHost = frmJm.txtIP.Text
Wsk2.RemotePort = frmJm.txtYDK.Text
If txtFs.Text = "" Then
MsgBox "请输入信息......", vbCritical, "提示"
Else
Wsk2.RemoteHost = frmJm.txtIP.Text
Wsk2.RemotePort = frmJm.txtYDK.Text
Wsk2.SendData txtFs.Text
txtJs.Text = txtJs.Text + vbCrLf + CStr(Date) + Chr(32) + CStr(Time$()) + vbCrLf & TxtNc & ":" & txtFs.Text
txtFs.Text = ""
End If
End If
End Sub
Private Sub Form_Unload(Cancel As Integer)
If Wsk1.State <> sckClosed Then
Wsk1.Close
End If
If Wsk2.State <> sckClosed Then
Wsk2.Close
End If
End SubPrivate Sub FWD_Click()
XZ = 1
frmJm.Show
frmJm.Caption = "服务端连接"
frmJm.Label1.Caption = "服务端IP"
frmJm.Label2.Visible = False
frmJm.txtYDK.Visible = False
Wsk1.Protocol = sckTCPProtocol
End SubPrivate Sub KHD_Click()
XZ = 2
frmJm.Show
frmJm.Caption = "客户端连接"
frmJm.Label1.Caption = "服务端IP"
Wsk2.Protocol = sckUDPProtocol
End SubPrivate Sub TC_Click()
If Wsk1.State <> sckClosed Then
Wsk1.Close
End If
If Wsk2.State <> sckClosed Then
Wsk2.Close
End If
End
End SubPrivate Sub Timer1_Timer()
Select Case Wsk1.State
Case 0
Label1.Caption = "关闭"
Case 1
Label1.Caption = "打开"
Case 2
Label1.Caption = "侦听"
Case 5
Label1.Caption = "以识别主机"
Case 6
Label1.Caption = "正在连接 "
Case 7
Label1.Caption = "已连接"
Case 9
Label1.Caption = "错误"
End Select
End Sub
Private Sub Timer2_Timer()
Select Case Wsk2.State
Case 0
Label1.Caption = "关闭"
Case 1
Label1.Caption = "打开"
Case 2
Label1.Caption = "侦听"
Case 5
Label1.Caption = "以识别主机"
Case 6
Label1.Caption = "正在连接 "
Case 7
Label1.Caption = "已连接"
Case 9
Label1.Caption = "错误"
End Select
End SubPrivate Sub wsk1_ConnectionRequest(ByVal requestID As Long)
If Wsk1.State <> sckClosed Then
Wsk1.Close
Wsk1.Accept requestID
End If
End SubPrivate Sub wsk1_DataArrival(ByVal bytesTotal As Long)
Dim Js As String
Wsk1.GetData Js, vbString
txtJs.Text = txtJs.Text + vbCrLf + CStr(Date) + Chr(32) + CStr(Time$()) + vbCrLf & "对方:" & Js
End Sub
Private Sub wsk2_DataArrival(ByVal bytesTotal As Long)
Dim Js As String
Wsk2.GetData Js, vbString
txtJs.Text = txtJs.Text + vbCrLf + CStr(Date) + Chr(32) + CStr(Time$()) + vbCrLf & "对方:" & Js
End Sub
--------------------------------------------
上面是主窗口的,下面的代码是连接窗口的
--------------------------------------------
Private Sub cmdLj_Click()
If XZ = 1 Then
If txtIP.Text = "" Then
MsgBox "请输入服务IP地址......", vbCritical, "提示"
ElseIf txtBDK.Text = "" Then
MsgBox "请输入本地端口......", vbCritical, "提示"
Else
frmZJM.Wsk1.LocalPort = txtBDK.Text
frmZJM.Wsk1.Listen
End If
frmZJM.Timer1.Enabled = True
Me.Hide
Else
If txtIP.Text = "" Then
MsgBox "请输入服务IP地址......", vbCritical, "提示"
ElseIf txtYDK.Text = "" Then
MsgBox "请输入服务端口......", vbCritical, "提示"
ElseIf txtBDK.Text = "" Then
MsgBox "请输入本地端口......", vbCritical, "提示"
Else
frmZJM.Wsk2.RemoteHost = txtIP.Text
frmZJM.Wsk2.RemotePort = txtYDK.Text
frmZJM.Wsk2.LocalPort = txtBDK.Text
'frmZJM.Wsk2.Bind frmZJM.Wsk2.LocalPort
frmZJM.Wsk2.Connect
End If
Me.Hide
frmZJM.Timer2.Enabled = True
MsgBox (frmZJM.Wsk2.LocalPort)
MsgBox (frmZJM.Wsk2.RemotePort)
MsgBox (frmZJM.Wsk2.RemoteHost)
End If
cmdLj.Enabled = False
End SubPrivate Sub Form_Load()
txtIP.Text = frmZJM.Wsk1.LocalIP
txtYDK.Text = 2110
txtBDK.Text = 2110
End Sub
------------------------------------------------
好像不能发图,晕,希望各位帮我看一下
里面的这一句
Winsock.GetData sRecv在前面加上 On Error Resume Next 就好了本来UDP协议是无连接协议,按理说不应该出现“关闭连接”之类的错,但是微软说了,这个一个bug,是因为ICMP导致的