在一个单位内部或通过广域协议(如X.25)互联的行业内部都有几十或上万台计算机互联,用Intranet虽然可以建立聊天室,但实现点对点实时对话却比较困难。本人用Winsock和VB自制了一套聊天室和对话系统,特拿来供同行们参考。
一、Winsock的主要属性、事件和方法
Winsock是不可见控件,控件文件名是MSWINSCK.OCX,全称为Mcirosoft winsock control,使用时要将此控件调入工具箱。
1、属性:
①Protocol=0 //使用TCP协议;
②RemoteHost //准备连接远程机的IP地址
③RemotePort //连接远程机的IP端口号 (1024—65535之间)
④LocalPort //本地机监听IP端口号必须与呼叫机端口号相同
2、方法:
①connect //申请连接远程机
②listen //设置监听
③accept //建立实际连接
④senddata //发送数据
⑤getdata //接收数据
⑥close //关闭连接
3、事件:
①connectionrequest //一方请求连接时另一方产生
②connect //一方机接受连接时另一方产生
③close //一方机关闭连接时另一方产生
④dataArrival //一方发送数据另一方产生
⑤error //请求连接失败时产生
二、制作方法
1、在一工程中添加两个表单form1(模拟客户端)、form2(模拟服务器端)。
(1)form1中装入控件:
控件名 主要属性 用 途
VB.Form form1
caption=”雷萌聊天室”
controlbox=0 ‘False
模拟客户机表单
VB.Textbox text1
multiline=-1 ‘True
scrollbars=3 ‘Bath
用于输入发往聊天室的信息
VB.Textbox text2
locked=-1 ‘True
multiline=-1 ‘True
scrollbars=3 ‘Bath
显示从聊天室发来的信息
VB.Combobox combo1
text=”10.84.234.11” ‘任定默认地址
放入常用的地址
VB.Commandbutton comm1
caption=”退出”
最小化form1
VB.Commandbutton comm2
caption=”连接”
请求与输入的地址连接
VB.Commandbutton send
caption=”发送”
发送Text1中的内容
VB.Label label1
caption=“请在此输入发表的信息”
Text1的框标
VB.Label label2
caption=“聊天室或对方的信息”
Text2的框标
VB.Label label3
caption=”等待连接”
显示连接状态信息
VB.Label label4
caption=”聊天室或对方地址”
用于指示Combo1
VB.Label label5
caption=”操作:选地址连接,连接成功看到聊天室内容后再输信息发送”
操作说明
VB.Timer timer1
interval=6000;
enabled=false;
防止连接超时
MSWinsocklib.winsock a
用于数据传输
(2)form2中装入控件:
控件名 主要属性 用 途
VB.Form form2
caption=”接收信息”
controlbox=0 ‘False
模拟客户机表单
VB.Commandbutton command1
caption=”返回”
隐含Form2窗口
VB.Commandbutton command2
caption=”对话”
点对点会话时用此直接启动Form1
VB.Textbox text1
locked=-1 ‘True
multiline=-1 ‘True
scrollbars=3 ‘Bath
存放聊天或对话内容
VB.Label label1
caption=”接收的信息”
Text1的框标
MSWinsocklib.Winsock a
用于监听
MSWinsocklib.Winsock b
用于传送聊天信息
责任编辑:小草