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 = Left(s, i - 1) '把号存入mKey RequID = Right(s, Len(s) - i) 'ID存入RequID End If
---- '如果是请求寻呼某一ID号码,则检索当前此ID用户是否登录(即CurUser数组中是否存在此用户),然后发送信息,通知此用户响应呼叫并显示主叫用户ID号码。 For i = 1 To tcpIndex If RequID = CurUser(i).ClientID And CurUser(i) .ClientConnected = True Then tcpServer(i).SendData (SearhID) End If Next Exit Sub ErrHandle: If Err.Number = sckBadState Then '连接不正确 CurUser(i).ClientConnected = False CurUser(i).ClientIP = "" Unload tcpServer(i) Resume Next End If End Sub
---- 本程序仅提供了用Visual Basic 编写网络寻呼的思路和主要部分的实现过程,至于主叫方和被叫方建立连接后的通信并未扩展,读者若有兴趣,可在这方面加入具体的实现代码,就可以给本程序增加更多的功能,如实时聊天,语音对话等。如果在服务器程序检索到被叫方时,分别通知两者客户端程序,使主叫方和被叫方直接利用IP地址进行连接,则两者的连接速度将会有大幅度的提高
(编辑:aniston)
|