3. 加一命令按钮,Name为clearmess,Caption为“清除消息”。
4. 加三个WinSock控件,Name分别为sckServer,sckBusy,sckListen。
下面是服务器程序的源代码:
Private MaxNumber As Integer
Dim curnumber As Integer
Dim chatname(50) As String
Dim firstmess(50) As Boolean
Private Sub clearmess_Click()
txtRecive.Text = ""
End Sub
Private Sub Form_Load()
MaxNumber = 50
curnumber = 0
For l = 0 To MaxNumber
firstmess(l) = True
Next l
For i = 1 To MaxNumber - 1
Load sckServer(i)
Next i
sckListen.LocalPort = 8888
sckListen.Listen
End Sub
Private Sub sckBusy_Close()
sckBusy.Close
End Sub
Private Sub sckBusy_DataArrival(ByVal bytesTotal As Long)
sckBusy.SendData "服务器忙,请稍后再连接!"
DoEvents
End Sub
Private Sub sckListen_ConnectionRequest(ByVal requestID As Long)
Dim i As Integer
For i = 0 To MaxNumber - 1
If sckServer(i).State = 0 Then
Exit For
End If
Next i
If sckServer(i).State = 0 Then
sckServer(i).Accept requestID
sckServer(i).SendData "欢迎您参加入网络聊天!"
curnumber = curnumber + 1
number.Caption = curnumber
Exit Sub
End If
sckBusy.Close
sckBusy.Accept requestID
End Sub
Private Sub sckListen_Error(ByVal number As Integer, _
Des cription As String, ByVal Scode As Long, _
ByVal Source As String, ByVal HelpFile As String, _
ByVal HelpContext As Long, CancelDisplay As Boolean)
sckListen.Close
sckListen.LocalPort = 8888
sckListen.Listen
End Sub
Private Sub sckServer_Close(Index As Integer)
Dim j As Integer
sckServer(Index).Close
firstmess(Index) = True
For j = 0 To MaxNumber - 1
If sckServer(j).State = 7 Then
sckServer(j).SendData chatname(Index) + "退出网络聊天"
DoEvents
End If
Next j
curnumber = curnumber - 1
number.Caption = curnumber
End Sub
Private Sub sckServer_DataArrival(Index As Integer, ByVal bytesTotal As Long)
Dim strData As String
Dim i As Integer
sckServer(Index).GetData strData
If firstmess(Index) = True Then
chatname(Index) = strData
firstmess(Index) = False
For m = 0 To 49
If (Index <> m) And (chatname(m) = strData) Then
sckServer(Index).Close
firstmess(Index) = True
curnumber = curnumber - 1
number.Caption = curnumber
Exit Sub
End If
Next m
strData = strData + "加入网络聊天"
End If
For i = 0 To MaxNumber - 1
If sckServer(i).State = 7 Then
sckServer(i).SendData strData
DoEvents
End If
Next i
txtRecive.Text = txtRecive.Text & "Index " & Index & " " & strData + vbCrLf
txtRecive.SelStart = Len(txtRecive.Text)
End Sub
Private Sub sckServer_Error(Index As Integer, ByVal number As Integer, _
Des cription As String, ByVal Scode As Long, ByVal Source As String, _
ByVal HelpFile As String, ByVal HelpContext As Long, _
CancelDisplay As Boolean)
sckServer(Index).Close
End Sub
上一页 1 2