编写网络寻呼机

2025-04-19 19:46:09

1、在VB中编写网络寻呼机需要建立两个程序,一个为客户端程序Client,一个为服务器端程序Server。  一、在Client工程中建立一个窗体,加载WinSock控件,称为tcpClient,协议选择TCP。再加入四个文本框,用以输入服务器的IP地址、服务器端口号,被呼叫的网络寻呼ID号以及用户登录ID号。然后再在窗体中加入三个按钮,分别命名为“连接”、“断开”和“退出”,点击“连接”按钮,并进行如下初始化连接,代码如下:

编写网络寻呼机

2、Private Sub Command1_Click() If Len(Text1.Text) = 0 An颊俄岿髭d Len(Text2.Text) = 0 Then  MsgBox ("请输入主机名或主机IP地址。")  Exit Sub ElseIf Len(Text1.Text) > 0 Then  tcpClient.RemoteHost = Text1.Text  tcpClient.RemotePort = Text2.Text End If tcpClient.Connect Timer1.Enabled = TrueEnd SubPrivate Sub Command2_Click() tcpClient.Close   '断开连接End SubPrivate Sub Command3_Click() EndEnd SubPrivate Sub Form_Load() Text2.Text = "1001"End SubPrivate Sub tcpClient_Connect() tcpClient.SendData (Text3.Text&"@"&Text4.Text)End SubPrivate Sub tcpClient_DataArrival(ByVal bytesTotal As Long) Dim strData As String tcpClient.GetData strData strData = strData + "呼叫" '在收到呼叫消息后弹出一对话框并显示主叫方ID号码 MsgBox (strData)End Sub

编写网络寻呼机

3、二、在服务器端Server工程中也建立一个窗体,加载WinSock控件,称为tcpServer,协议选择TCP,设置其Index值为0,并在工程中添加模块。内容如下:Private Type ActiveUser ClientIP As String    '记录客户的IP地址 ClientPort As Integer  '记录当前会话的端口 ClientID As Long     '记录客户的ID号码 ClientConnected As Boolean '客户连接状态,True表示已连接,False表示没有连接End TypeDim CurUser() As ActiveUserDim tcpIndex As Integer  '跟踪当前建立连接数

编写网络寻呼机

4、在Form_Load事件中加入如下代码:Private Sub Form_Load() tcpServer(0).Protocol = sckTCPProtocol tcpServer(0).LocalPort = 1001 '将 LocalPort 属性设置为一个整数。 tcpServer(0).Listen  '然后调用 Listen 方法。 tcpIndex = 1End Sub

编写网络寻呼机

5、准备应答客户端程序的请求连接,使用ConnectionRequest事件来应答户端程序的请求,代码如下: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

编写网络寻呼机

6、'测试连接是否成功 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 

编写网络寻呼机

7、 争犸禀淫'检查控件的 State 属性,如未关闭,在接受新的连接之前关闭此连接。  If tcpServer(0).State <> sckClosed The荏鱿胫协n  tcpServer(0).Close  tcpServer(0).Accept requestID    '接受具有 requestID 参数的,连接。End SubPrivate 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 IfEnd Sub

编写网络寻呼机
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢