这只是介绍一下概念,游戏大都使用DirectPlay,现在VB也应该可以,我没有尝试过。
  网络寻呼的原理就是当客户端程序连接服务器时,通过服务器搜索所要呼叫的ID号码,如果检测到此用户且该用户正处于联网状态,则服务器通知此用户的客户端程序响应主叫方客户端程序,然后在主叫方和被叫方建立连接后,双方就可以聊天或进行其它的通信。  在VB中编写网络寻呼机需要建立两个程序,一个为客户端程序Client,一个为服务器端程序Server。  一、在Client工程中建立一个窗体,加载WinSock控件,称为tcpClient,协议选择TCP。再加入四个文本框,用以输入服务器的IP地址、服务器端口号,被呼叫的网络寻呼ID号以及用户登录ID号。然后再在窗体中加入三个按钮,分别命名为“连接”、“断开”和“退出”,点击“连接”按钮,并进行如下初始化连接,代码如下: Private Sub Command1_Click()
 If Len(Text1.Text) = 0 And 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 = True
End SubPrivate Sub Command2_Click()
 tcpClient.Close   '断开连接
End SubPrivate Sub Command3_Click()
 End
End 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  二、在服务器端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 ActiveUser
Dim tcpIndex As Integer  '跟踪当前建立连接数  在Form_Load事件中加入如下代码: Private Sub Form_Load()
 tcpServer(0).Protocol = sckTCPProtocol
 tcpServer(0).LocalPort = 1001 
 '将 LocalPort 属性设置为一个整数。
 tcpServer(0).Listen  '然后调用 Listen 方法。
 tcpIndex = 1
End Sub  准备应答客户端程序的请求连接,使用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
 '测试连接是否成功
 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 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 If
End Sub  本程序仅提供了用Visual Basic 编写网络寻呼的思路和主要部分的实现过程,至于主叫方和被叫方建立连接后的通信并未扩展,读者若有兴趣,可在这方面加入具体的实现代码,就可以给本程序增加更多的功能,如实时聊天,语音对话等。如果在服务器程序检索到被叫方时,分别通知两者客户端程序,使主叫方和被叫方直接利用IP地址进行连接,则两者的连接速度将会有大幅度的提高。