ndData "03|" & Text2
Text2 = ""
Else
If Combo1.Text = "无" Or Left(Right(Combo1.Text, 7), 6) = id Or Combo1.Text = "" Then Combo1.ListIndex = 0: MsgBox "私聊对象错误", vbOKOnly + 64, "提示": Exit Sub
Winsock1.SendData "07|" & Mid(List2.List(Combo1.ListIndex - 1), 1, 3) & "|" & Text2
Text2 = ""
End If
Text2.SetFocus
End Sub
Private Sub geren_Click()
formactive = False
Form5.Show
Me.Hide
Form5.Text1 = id
If Winsock1.State <> sckConnected Then
Form5.SSTab1.TabEnabled(0) = False
Form5.SSTab1.TabEnabled(2) = False
Form5.SSTab1.Tab = 1
Else
Winsock1.SendData "04|" & id
Form5.Timer1.Enabled = True
End If
End Sub
客户端主界面见图6-15:
图6.15客户端主界面图
其中菜单中的文件里,分别有登陆、注册和注销功能,这些功能的相关代码如下:
Private Sub comein_Click()
Me.Hide
formactive = False
Form4.Show
Form4.Text1.SetFocus
End Sub
Private Sub zhuche_Click()
Me.WindowState = 1
Me.Hide
formactive = False
Form2.Show
Form2.Text1.SetFocus
End Sub
Private Sub zhuxiao_Click()
comein.Enabled = True
zhuxiao.Enabled = False
zhuche.Enabled = True
closeflag = False
Winsock1.Close
Text1.SelStart = Len(Text1)
Text1.SelText = "【系统消息】你已经注销了" & vbCrLf
Form_Load
End Sub
点击登陆后会显示以下登陆窗口,用户ID六位数后自动转到密码栏,回车即完成登陆操作。
登陆窗口如图6.16:
图6.16登陆界面图
注册窗口和个人信息窗口也显示在下面了,通过注册界面可以自定义个人信息,完成注册并且用自己随机获取的ID号进行登陆,登陆后可以通过双击在线名单的某一行,查看对应的人员信息。
注册窗口和个人信息窗口的界面如图6-17和图6-18:
图6.17 注册窗口
图6.18个人信息窗口的界面
6.2.9 底层通讯设计
服务器端:
为了使能及时响应多个用户的请求,我对winsock控件添加了数组,也就是说,在连接上一个用户后,自动增加一个winsock控件进行侦听。发送数据使用的是多个端口,设置数组控件会使程序具有很大的灵活性,发送端口会自动定义,而且不重复使用同一端口,所以端口是多少都无所谓,这不是我们需要关心的,在某用户断开连接时候,