首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 网络编程-> Visual Basic教程
用vb实现聊天讨论室和点对点会话_visualbasic教程
作者:网友供稿 点击:0
推荐
西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金
站内搜索
文章页数:[1] 
在一个单位内部或通过广域协议(如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



PrivateSubComm1_Click()

a.Close注释:关闭连接

Form1.WindowState=1

EndSub



PrivateSubComm2_Click()

IfComm2.Caption="断开连接"Then

a.Close

Comm2.Caption="连接"

Label3.Caption="等待连接"

Combo1.Enabled=True

Timer1.Enabled=False

Comm2.MousePointer=0

Form1.MousePointer=0

Else

Text2.Text=""

Label3.Caption="正在连接.."

Comm2.MousePointer=11

Form1.MousePointer=11

Timer1.Enabled=True

flag=False

a.Protocol=sckTCPProtocol

a.RemoteHost=Combo1.Text

a.RemotePort=3000

a.Connect

EndIf

EndSub



PrivateSubForm_DblClick()

IfMsgBox("关闭本聊天室!确认吗?",36,"退出系统")=6Then

End

Else

Form1.WindowState=1

EndIf

EndSub



PrivateSubForm_Load()

IfApp.PrevInstanceThen

MsgBox"本系统已经加载,请看任务拦!",48,"提示"

End

EndIf

flag=False

LoadForm2‘读入form2进入监听

EndSub



PrivateSubSend_Click()

DimSAsString

OnErrorGoToffff‘防止链路中断

Send.MousePointer=11

IfRight(Text1.Text,1)<>Chr(10)Then

S=Text1.Text Chr(13) Chr(10)

Else

S=Text1.Text

EndIf

IfflagThen

a.SendDataS

EndIf

ExitSub

ffff:

MsgBox"连接中断!",48,"提示"

a.Close

Send.MousePointer=0

Comm2.Caption="连接"

Label3.Caption="等待连接"

Combo1.Enabled=True

Comm2.MousePointer=0

Form1.MousePointer=0

ExitSub

EndSub



PrivateSubTimer1_Timer()

flag=False

Timer1.Enabled=False

Comm2.MousePointer=0

Form1.MousePointer=0

MsgBox"网络连接失败(超时)!"

Label3.Caption="等待连接"

Combo1.Enabled=True

Combo1.SetFocus

a.Close

Comm2.Caption="连接"

EndSub



⑶在Form2的各控件事件中加入如下代码:

Constmaxn=200‘最大同时连接本机的客户数

Dimuser(maxn)AsBoolean



PrivateSubCommand1_Click()

Form2.Hide

EndSub



PrivateSubCommand2_Click()

LoadForm1

Form1.Show

EndSub



PrivateSubForm_Load()

Dimstr1AsString

Form2.Caption="雷萌通信软件"

注释:winsock控件a作为服务器程序监听

a.LocalPort=3000

a.Listen

EndSub



PrivateSuba_ConnectionRequest(ByValrequestIDAsLong)

DimiAsLong

Fori=1Tomaxn‘当一客户请求时给启动一Winsock控件标志号

IfNotuser(i)Then

user(i)=True

ExitFor

EndIf

Nexti

Ifi>maxnThen

ExitSub

EndIf

Loadb(i)‘当一客户请求时启动一Winsock控件

b(i).AcceptrequestID注释:实际建立连接

IfText1.Text=""Then注释:发送数据

b(i).SendDataChr(0)

Else

b(i).SendDataText1.Text

EndIf

Form2.Show

EndSub



PrivateSubs_Close(IndexAsInteger)

b(Index).Close注释:关闭连接

Unloadb(Index)注释:卸载一个WinSock控件

user(Index)=False

EndSub

PrivateSubb_DataArrival(IndexAsInteger,ByValbytesTotalAsLong)

DimstrAsString

DimiAsLong

b(Index).GetDatastr

Text1.Text=Text1.Text str

Fori=1Tomaxn

Ifuser(i)Then

b(i).SendDatastr

EndIf

Nexti

EndSub

三·运行

本程序在VB6.0中编译通过,运行后最小化到任务栏上,也可以用API的Shell_Notifyicon函数做入右下角的指示器栏中常驻内存。你可以在网络中用一个固定的机器地址作为聊天讨论室,其他用户都选该机地址连接进入该室聊天或讨论。各用户也可选各自熟悉的地址进行连接对话,双击form1空白处从内存中撤出系统。根据同样的原理可以制作电子邮件系统。->


文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·ASP.net中动态加载控件时一些问题的总结-ASP教程,ASP应用
·C#读写注册表-.NET教程,C#语言
·Visual Basic .NET中的异常处理简介(下)-.NET教程,VB.Net语言
·C#:文件的按行读/写及文件目录对话框的使用-.NET教程,C#语言
·ADO.Net:使用DataReader向数据库中插入数据-ASP教程,数据库相关
·列一张网恋赔偿清单(爆笑)
·如何用Photoshop画服装款式图-网页设计,Photoshop
·.NET下使用DataAdapter保存数据时,如何生成command语句及使用事务-.NET教程,数据库应用
·新型dc/dc电源控制芯片dpa426的应用
·ASP.NET 2.0 - Enter Key - Default Submit Button-.NET教程,Asp.Net开发
最新文章
·个人站长的网络赚钱两条新出路_网赚技巧
·adsense帐户最佳化纵深谈-adsense资深专员_网赚技巧
·google adsense容易被k的可能性列表_网赚技巧
·如何让程序被站长接受和产生利润_站长访谈
·马云,即成的中国互联网第4代霸主_站长访谈
·google关键词广告创建的十二招_google推广
·如何使google更快速收录你的新站_google推广
·几个颇有创意的网站推广方法_站长心得
·网络编辑:标题,如何让网民一见钟情(2)_网络编辑
·网站建设基础seo搜索引擎优化_seo网站优化
相关主题
  • 用vb实现象windows记事本的一些功能_visualbasic教程
  • 用vb实现浮动按钮_visualbasic教程
  • 用vb实现“icq”式的启动欢迎画面_visualbasic教程
  • 用vb实现文件查找功能_visualbasic教程
  • 用vb实现应用程序在局域网络上自动更新_visualbasic教程
  • 西部数码虚拟主机

    友情链接
    CNNIC 西部数码
    万网 自助建站
    虚拟主机 asp空间
    域名注册 域名
    域名申请 主页空间
    论坛空间 网站空间
    国际域名 虚拟空间
    空间租用 DDOS防火墙
    成都主机托管 四川主机托管
    主机租用 服务器租用
    网站目录 自助建站
    虚拟主机 网址大全
    软件下载
    自助链接
    虚拟主机资讯 特价虚拟主机
    版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
    关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
    特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
    发表评论 打印  刷新     关闭