|
Private Sub tcpServer_ConnectionRequest(Index As Integer, ByVal requestID As Long) Dim i As Integer On Error GoTo ErrHandle For i = 1 To tcpIndex '选择一个空闲端口 If CurUser(i).ClientConnected = False And i < > tcpIndex Then Load tcpServer(i) tcpServer(i).LocalPort = CurUser(i).ClientPort - 1 tcpServer(i).Accept requestID Exit For ElseIf CurUser(i).ClientConnected = False Then Load tcpServer(i) tcpServer(i).LocalPort = Port If tcpServer(i).State < > sckClosed Then tcpServer(i).Close End If tcpServer(i).Accept requestID Exit For End If Next DoEvents '测试连接是否成功 If tcpServer(i).State = sckConnected Then If i = tcpIndex Then '已经没有可用端口,记录客户的IP地址和端口号 tcpIndex = tcpIndex + 1 Port = Port + 1 ReDim Preserve CurUser(tcpIndex) CurUser(i).ClientIP = tcpServer(i).RemoteHostIP CurUser(i).ClientConnected = True CurUser(i).ClientPort = Port CurUser(tcpIndex).ClientConnected = False Else CurUser(i).ClientIP = tcpServer(i).RemoteHostIP CurUser(i).ClientPort = Port CurUser(i).ClientConnected = True End If End If Exit Sub ErrHandle: Resume Next '检查控件的 State 属性,如未关闭,在接受新的连接之前关闭此连接。 If tcpServer(0).State <> sckClosed Then tcpServer(0).Close tcpServer(0).Accept requestID '接受具有 requestID 参数的,连接。 End Sub
Private Sub tcpServer_DataArrival(Index As Integer, ByVal bytesTotal As Long) Dim i As Integer Dim s As String Dim RequID As Long '主叫方ID号码 Dim SearchID As Long '被叫方ID号码
On Error GoTo ErrHandle tcpServer(Index).GetData s, vbString '接收数据并存入s If Mid(s, i, 1) = "@" Then '分离s中的主叫方和被叫方ID号码 SearhID = |