新手求教,聊天室

weilai_li 2013-01-09 02:39:54
Dim ip1 As String
Dim isrunning() As Boolean
Option Explicit
Private Sub Command1_Click() '点击发送按钮
Dim sendata As String
Dim i As Integer
For i = 0 To Winsock1.UBound
If Winsock1(i).State = 7 Then
sendata = "系统消息:——>" & Text3.Text
Winsock1(i).SendData sendata '发送数据到对方
DoEvents

End If
Next
'Text4.Text = Now & vbCrLf
Text4.Text = Text4.Text & Now & vbCrLf & "系统消息——>" & Text3.Text & vbCrLf & vbCrLf
Text3.Text = "" '清空发送文本框
Text3.SetFocus

End Sub

Private Sub Form_Load()
Winsock1(0).LocalPort = 1600 '设置服务端口号
Text1.Text = Winsock1(0).LocalIP '读取服务器ip地址
Text2.Text = 1600
Winsock1(0).Listen '设置监听Text1.SetFocus
End Sub

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

Private Sub Winsock1_Close(index As Integer) '客户端断开连接后
If Winsock1(index).State <> 0 Then
Winsock1(index).Close
'Unload Winsock1
List2.Clear '在线列表处理
Winsock1(0).Listen


End If
End Sub

Private Sub Winsock1_ConnectionRequest(index As Integer, ByVal requestID As Long)
Dim ip As String

If Winsock1(index).State <> 0 Then
Winsock1(index).Close
End If
Winsock1(index).Accept requestID '接受远程主机的请求
ip = Winsock1(index).RemoteHostIP
ip1 = ip
List2.AddItem ip

End Sub

Private Sub Winsock1_DataArrival(index As Integer, ByVal bytesTotal As Long)
Dim str As String
Dim str1 As String
Dim i As Integer
Winsock1(index).GetData str
Text4.Text = Text4.Text & Now & vbCrLf & ip1 & ":---->" & str & vbCrLf & vbCrLf
str1 = ip1 & ":----->" & str
For i = 0 To Winsock1.UBound
If i <> index Then
Winsock1(index).SendData str1
End If
Next


End Sub

现在能实现服务器和客户端对话,可如果客户端多了话实现不了
我的思路是winsock(0)监听,然后如果客户端多了就用index,可现在就是实现不了,也不知道问题在哪儿?
...全文
37 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧