想用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代码也不执行..
请问是什么原因?

解决方案 »

  1.   

    可能是你的连接没有连接上。WS.Connect GetIniStr("winsock", "m_room"), 1001 ‘GetIniStr("winsock", "m_room") 是不是本机的地址?
      

  2.   


    想用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