如何用VB实现聊天讨论室和点对点会话

来源:期刊VIP网所属分类:软件开发发布时间:2014-05-06浏览:

  在一个单位内部或通过广域协议(如X.25)互联的行业内部都有几十或上万台计算机互联,用Intranet虽然可以建立聊天室,但实现点对点实时对话却比较困难。本人用Winsock和VB自制了一套聊天室和对话系统,特拿来供同行们参考。

  一·Winsock的主要属性、事件和方法

  Winsock是不可见控件,控件文件名是MSWINSCK.OCX,全称为Mcirosoftwinsockcontrol,使用时要将此控件调入工具箱。

  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//请求连接失败时产生

  二·制作方法

  ⑴在一工程中添加两个表单form1(模拟客户端)、form2(模拟服务器端)。

  form1中装入控件:

  控件名

  主要属性

  用途

  VB.Formform1

  caption=”雷萌聊天室”

  controlbox=0‘False

  模拟客户机表单

  VB.Textboxtext1

  multiline=-1‘True

  scrollbars=3‘Bath

  用于输入发往聊天室的信息

  VB.Textboxtext2

  locked=-1‘True

  multiline=-1‘True

  scrollbars=3‘Bath

  显示从聊天室发来的信息

  VB.Comboboxcombo1

  text=”10.84.234.11”‘任定默认地址

  放入常用的地址

  VB.Commandbuttoncomm1

  caption=”退出”

  最小化form1

  VB.Commandbuttoncomm2

  caption=”连接”

  请求与输入的地址连接

  VB.Commandbuttonsend

  caption=”发送”

  发送Text1中的内容

  VB.Labellabel1

  caption=“请在此输入发表的信息”

  Text1的框标

  VB.Labellabel2

  caption=“聊天室或对方的信息”

  Text2的框标

  VB.Labellabel3

  caption=”等待连接”

  显示连接状态信息

  VB.Labellabel4

  caption=”聊天室或对方地址”

  用于指示Combo1

  VB.Labellabel5

  caption=”操作:选地址连接,连接成功看到聊天室内容后再输信息发送”

  操作说明

  VB.Timertimer1

  interval=6000;enabled=false

  防止连接超时

  MSWinsocklib.winsocka

  用于数据传输

  form2中装入控件:

  控件名

  主要属性

  用途

  VB.Formform2

  caption=”接收信息”

  controlbox=0‘False

  模拟客户机表单

  VB.Commandbuttoncommand1

  caption=”返回”

  隐含Form2窗口

  VB.Commandbuttoncommand2

  caption=”对话”

  点对点会话时用此直接启动Form1

  VB.Textboxtext1

  locked=-1‘True

  multiline=-1‘True

  scrollbars=3‘Bath

  存放聊天或对话内容

  VB.Labellabel1

  caption=”接收的信息”

  Text1的框标

  MSWinsocklib.Winsocka

  用于监听

  MSWinsocklib.Winsockb

  用于传送聊天信息

  ⑵在Form1的各控件事件中加入如下代码:

  DimflagAsBoolean注释:连接状态变量

  PrivateSuba_Connect()

  flag=True

  EndSub

  PrivateSuba_DataArrival(ByValbytesTotalAsLong)

  DimiAsString

  a.GetDatai

  Label3.Caption="连接成功!"

  Comm2.MousePointer=0

  Form1.MousePointer=0

  Timer1.Enabled=False

  Ifi=Chr(0)Then

  Text2.Text="你是今天第一个进入本聊天室的客户。"+Chr(13)+Chr(10)

  Else

  Text2.Text=Text2.Text+i

  EndIf

  Text2.SelStart=Len(Text2.Text)

  Send.MousePointer=0

  Combo1.Enabled=False

  Comm2.Caption="断开连接"

  Text1.SetFocus

  EndSub

  PrivateSuba_Error(ByValNumberAsInteger,DescriptionAsString,ByValScodeAsLong,ByValSourceAsString,ByValHelpFileAsString,ByValHelpContextAsLong,CancelDisplayAsBoolean)

  flag=False

  Timer1.Enabled=False

  Comm2.MousePointer=0

  Form1.MousePointer=0

  MsgBox"网络连接失败!"

  Label3.Caption="等待连接"

  Combo1.Enabled=True

  Combo1.SetFocus

  a.Close

  Comm2.Caption="连接"

  EndSub

期刊VIP网,您身边的高端学术顾问

文章名称: 如何用VB实现聊天讨论室和点对点会话

文章地址: http://www.qikanvip.com/ruanjiankaifa/13017.html