想用winsock建立两个窗体form1,form2的通信
form1:-----------------------------------
Private Sub Form_Load()
ws.LocalPort = 1001
ws.Listen
End Sub
Private Sub ws_ConnectionRequest(ByVal requestID As Long)
If ws.State <> 0 Then ws.Close
ws.Accept requestID
Text2.Text = "挂号室连入,通信中..."
End SubPrivate Sub ws_DataArrival(ByVal bytesTotal As Long)
Dim Str As String
ws.GetData Str
List1.AddItem Str
Text2.Text = "通信完毕!"
End Sub
-----------------------------------------------------------
form2:
Private Sub Btn_Click()
On Error GoTo note
WS.Connect GetIniStr("winsock", "m_room"), 1001
Timer2.Enabled = True '发送
Exit Sub
note:
MsgBox "运行错误:" & Error & "。连接有延迟,请稍候!", vbOKOnly, "Error"
End SubPrivate Sub Timer2_Timer()
'根据状态,判断是否发送.
If WS.State = 7 Then
Timer2.Enabled = False
WS.SendData (Text6.Text)
If WS.State = 7 Then WS.SendData Text5.Text
If WS.State = 7 Then WS.SendData Text3.Text
WS.Close
Exit Sub
End If
If WS.State = 9 Then
Timer2.Enabled = False
WS.Close
End If
End Sub
-----------------------------------------
问题,当我用form2 发送消息给form1时,
form1的text2中显示"挂号室连入,通信中..."后就停止了
form1中的ws_DataArrival代码也不执行..
请问是什么原因?
form1:-----------------------------------
Private Sub Form_Load()
ws.LocalPort = 1001
ws.Listen
End Sub
Private Sub ws_ConnectionRequest(ByVal requestID As Long)
If ws.State <> 0 Then ws.Close
ws.Accept requestID
Text2.Text = "挂号室连入,通信中..."
End SubPrivate Sub ws_DataArrival(ByVal bytesTotal As Long)
Dim Str As String
ws.GetData Str
List1.AddItem Str
Text2.Text = "通信完毕!"
End Sub
-----------------------------------------------------------
form2:
Private Sub Btn_Click()
On Error GoTo note
WS.Connect GetIniStr("winsock", "m_room"), 1001
Timer2.Enabled = True '发送
Exit Sub
note:
MsgBox "运行错误:" & Error & "。连接有延迟,请稍候!", vbOKOnly, "Error"
End SubPrivate Sub Timer2_Timer()
'根据状态,判断是否发送.
If WS.State = 7 Then
Timer2.Enabled = False
WS.SendData (Text6.Text)
If WS.State = 7 Then WS.SendData Text5.Text
If WS.State = 7 Then WS.SendData Text3.Text
WS.Close
Exit Sub
End If
If WS.State = 9 Then
Timer2.Enabled = False
WS.Close
End If
End Sub
-----------------------------------------
问题,当我用form2 发送消息给form1时,
form1的text2中显示"挂号室连入,通信中..."后就停止了
form1中的ws_DataArrival代码也不执行..
请问是什么原因?
想用winsock建立两个窗体form1,form2的通信
form1:-----------------------------------
Private Sub Form_Load()
ws.LocalPort = 1001
ws.Listen
End Sub
Private Sub ws_ConnectionRequest(ByVal requestID As Long)
If ws.State <> 0 Then ws.Close
ws.Accept requestID
Text2.Text = "挂号室连入,通信中..."
End Sub Private Sub ws_DataArrival(ByVal bytesTotal As Long)
Dim Str As String
ws.GetData Str
List1.AddItem Str
Text2.Text = "通信完毕!"
End Sub
-----------------------------------------------------------
form2:
Private Sub Btn_Click()
On Error GoTo note
WS.Connect GetIniStr("winsock", "m_room"), 1001
Timer2.Enabled = True '发送
Exit Sub
note:
MsgBox "运行错误:" & Error & "。连接有延迟,请稍候!", vbOKOnly, "Error"
End Sub Private Sub Timer2_Timer()
'根据状态,判断是否发送.
If WS.State = 7 Then
Timer2.Enabled = False
WS.SendData (Text6.Text)
If WS.State = 7 Then WS.SendData Text5.Text
If WS.State = 7 Then WS.SendData Text3.Text
'WS.Close 这句不要,因为你关闭了。数据都还没有发过去就关闭了,所以出问题了,。
Exit Sub
End If
If WS.State = 9 Then
Timer2.Enabled = False
WS.Close
End If
End Sub