寄托家园留学论坛:VB局域网聊天工具,只能单方发消息

来源:百度文库 编辑:高考问答 时间:2024/05/04 05:40:33
只能是连接端发消息
监听端不能发消息
怎么回事?大家看代码
解决后本人再给50分
Dim textstring As String
Private Sub Connect_Click()
Disconnect_Click
Winsock2.RemoteHost = InputBox("请输入服务器主机名(IP地址)", "输入", "192.168.0.2")
Winsock2.RemotePort = Val(InputBox("请输入服务器端口号", "输入", 1024))
Winsock2.Connect
Connect.Enabled = False
End Sub

Private Sub Disconnect_Click()
If Disconnect.Caption = "结束监听" Then
Winsock1.Close
Listen.Enabled = True
Disconnect.Caption = "断开"
Else
Winsock2.Close
Connect.Enabled = True
Text2.Enabled = False
End If
End Sub

Private Sub Exit_Click()
Unload Me
End Sub

Private Sub Form_Unload(Cancel As Integer)
Winsock1.Close
Winsock2.Close
End Sub

Private Sub Listen_Click()
Winsock1.LocalPort = Val(InputBox("请输入监听端口号(通常大于1024)", "输入", 1024))
If Winsock1.LocalPort > 0 Then
Disconnect_Click
Winsock1.Listen
Listen.Enabled = False
Disconnect.Caption = "结束监听"
End If
End Sub
Private Sub Text2_KeyPress(KeyAscii As Integer)
If KeyAscii <> 13 Then
textstring = textstring + Chr(KeyAscii)
Else
Text1 = Text1 + textstring + Chr(13) + Chr(10)
Winsock2.SendData (textstring)
textstring = ""
End If
End Sub

Private Sub Winsock2_Close()
'对方关闭连接时,控触发该时间通知程序
Winsock2.Close
Connect.Enabled = True
'Text2.Enabled = False
End Sub

Private Sub Winsock2_Connect()
'当控件申请并成功连接时,触发该事件
MsgBox ("shenqing chenggong!")
Text2.Enabled = True

End Sub

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
'控件监听到网络连接申请时,触发该事件
MsgBox "shoudaoshenqing !"
Winsock1.Close '停止监听
Listen.Enabled = True
Connect.Enabled = False
Disconnect.Caption = "断开"
Winsock1.Accept requestID
Text2.Enabled = True
End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
'控件接收到数据时,触发该事件
Dim Str As String
Winsock1.GetData Str '接收数据
Text1 = Text1 + Str + Chr(13) + Chr(10) '显示数据
End Sub

Private Sub Winsock2_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)
'控件产生网络错误
Text1 = Text1 + Description + Chr(13) + Chr(10)
Select Case Number
Case 10061
Winsock2.Close
Connect.Enabled = True
End Select
End Sub
连接前暂停是怎么回事?

连接之间应先停止,我以前就经常遇到过类似的问题

Private Sub Command1_Click()
'连接按钮代码

Winsock1.Close
Winsock1.Connect IP, 端口
End Sub

我做过很多这样的东西,QQ我,我传给你 QQ:905906