用Winsock制作一套聊天室和对话系统

在一个单位内部或通过广域协议(如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.Formform1caption=”雷萌聊天室”controlbox=0‘False模拟客户机表单VB.Textboxtext1multiline=-1‘Truescrollbars=3‘Bath用于输入发往聊天室的信息VB.Textboxtext2locked=-1‘Truemultiline=-1‘Truescrollbars=3‘Bath显示从聊天室发来的信息VB.Comboboxcombo1text=”10.84.234.11”‘任定默认地址放入常用的地址VB.Commandbuttoncomm1caption=”退出”最小化form1VB.Commandbuttoncomm2caption=”连接”请求与输入的地址连接VB.Commandbuttonsendcaption=”发送”发送Text1中的内容VB.Labellabel1caption=“请在此输入发表的信息”Text1的框标VB.Labellabel2caption=“聊天室或对方的信息”Text2的框标VB.Labellabel3caption=”等待连接”显示连接状态信息VB.Labellabel4caption=”聊天室或对方地址”用于指示Combo1VB.Labellabel5caption=”操作:选地址连接,连接成功看到聊天室内容后再输信息发送”操作说明VB.Timertimer1interval=6000;enabled=false防止连接超时MSWinsocklib.winsocka用于数据传输form2中装入控件:控件名主要属性用途VB.Formform2caption=”接收信息”controlbox=0‘False模拟客户机表单VB.Commandbuttoncommand1caption=”返回”隐含Form2窗口VB.Commandbuttoncommand2caption=”对话”点对点会话时用此直接启动Form1VB.Textboxtext1locked=-1‘Truemultiline=-1‘Truescrollbars=3‘Bath存放聊天或对话内容VB.Labellabel1caption=”接收的信息”Text1的框标MSWinsocklib.Winsocka用于监听MSWinsocklib.Winsockb用于传送聊天信息⑵在Form1的各控件事件中加入如下代码:DimflagAsBoolean注释:连接状态变量PrivateSuba_Connect()flag=TrueEndSubPrivateSuba_DataArrival(ByValbytesTotalAsLong)DimiAsStringa.GetDataiLabel3.Caption="连接成功!"Comm2.MousePointer=0Form1.MousePointer=0Timer1.Enabled=FalseIfi=Chr(0)ThenText2.Text="你是今天第一个进入本聊天室的客户。"Chr(13)Chr(10)ElseText2.Text=Text2.TextiEndIfText2.SelStart=Len(Text2.Text)Send.MousePointer=0Combo1.Enabled=FalseComm2.Caption="断开连接"Text1.SetFocusEndSubPrivateSuba_Error(ByValNumberAsInteger,DescriptionAsString,ByValScodeAsLong,ByValSourceAsString,ByValHelpFileAsString,ByValHelpContextAsLong,CancelDisplayAsBoolean)flag=FalseTimer1.Enabled=FalseComm2.MousePointer=0Form1.MousePointer=0MsgBox"网络连接失败!"Label3.Caption="等待连接"Combo1.Enabled=TrueCombo1.SetFocusa.CloseComm2.Caption="连接"EndSubPrivateSubComm1_Click()a.Close注释:关闭连接Form1.WindowState=1EndSubPrivateSubComm2_Click()IfComm2.Caption="断开连接"Thena.CloseComm2.Caption="连接"Label3.Caption="等待连接"Combo1.Enabled=TrueTimer1.Enabled=FalseComm2.MousePointer=0Form1.MousePointer=0ElseText2.Text=""Label3.Cap...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

文秘专家
机构认证
内容提供者

1

确认删除?