to redleaves:
也给我一份吧,谢谢了。[email protected]
也给我一份吧,谢谢了。[email protected]
解决方案 »
- Label能当按钮使用吗?
- 关于if and的条件判断语句问题,哪里出错了?
- webrowser能否不弹出确定对话框?
- 请问读写Excel数据的时候怎么处理合并的单元格?
- data report 中是否可以实现如下功能
- 关于用友华表?
- EPSON打印尺寸比实际文件偏小的原因
- 在VB中能否动态改变数据环境设计器的数据源?
- 第四次了,巴顿和泰山和各位高手们都看过来吧!帮我一下吧!http://www.csdn.net/expert/topic/493/493873.shtm
- 打包不成功,急呀!(Active X部件不能创建对象)
- 想用VB谢一个关于在登入windows时,能够记录下个人情况的信息,或是给定用户名和密码登入,不知从那下手,望给与帮助,E-mail:[email protected] 谢谢!
- 请问“err3265 这个集合中找不到此项目”是什么原因?
[email protected]
谢了
[email protected]
能给我一份吗?先谢谢了!
[email protected]
[email protected]
thx
没有在internet下测试过。用udp
无服务器模式。
要的话给我mail:[email protected]
不过哪个好象还有bug
http://phf110.yeah.net
新年快乐
感谢作者。在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 Type
Dim 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
比较完整的ICQ开发包,包括protocol(协议)、api docs(API文档)、control center(控制界面)、encryption(加密)、www pager(WWW页面)五个部分,你可以系统地了解如何完成一个icq软件。
http://210.75.132.33/lakes/detail.asp?id=236聊天程序
http://210.75.132.33/lakes/detail.asp?id=233