使用VB设计聊天室 多点对多点网络程序设计Word文件下载.docx
- 文档编号:21359974
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:16
- 大小:159.32KB
使用VB设计聊天室 多点对多点网络程序设计Word文件下载.docx
《使用VB设计聊天室 多点对多点网络程序设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《使用VB设计聊天室 多点对多点网络程序设计Word文件下载.docx(16页珍藏版)》请在冰豆网上搜索。
微软公司的VisualBasic6.0是Windows应用程序开发工具,使目前最为广泛的、易学易用的面向对象的开发工具。
VisualBasic提供了大量的控件,这些控件可用于设计界面和实现各种功能,减少了编程人员的工作量,也简化了界面设计过程,从而有效的提高了应用程序的运行效率和可靠性。
故而,实现本系统VB是一个相对较好的选择。
在VisualBasic中,可通过属性、方法和事件来说明和衡量一个对象的特征:
●事件(Event)
事件是指发生在某一对象上的事情。
事件又可分为鼠标事件和键盘事件。
例如,在命令按钮(CommandButton)这一对象上可能发生鼠标单击(Click)、鼠标移动(MouseMove)、鼠标按下(MouseDown)等鼠标事件,也可能发生键盘按下(KeyDown)等键盘事件。
总之,事件指明了对象“什么情况下做?
”,常用于定义对象发生某种反映的时机和条件。
●方法(Method)
方法是用来控制对象的功能及操作的内部程序。
例如,人具有说话、行走、学习、睡觉等功能,在visualBasic中,对象所能提供的这些功能和操作,就称作“方法”。
以窗体为例,它具有显示(show)或隐藏(hide)的方法。
总之,方法指明了对象“能做什么?
”,常用于定义对象的功能和操作。
●属性(Property)
属性是指用于描述对象的名称、位置、颜色、字体等特征的一些指标。
可以通过属性改变对象的特性。
有些属性可以在设计时通过属性窗口来设置,不用编写任何代码;
而有些属性则必须通过编写代码,在运行程序的同时进行设置。
可以在运行时读取和设置取值的属性成为读写属性,只能读取的属性成为只读属性。
总之属性指明了对象“是什么样的?
”,常用于定义对象的外观。
如同上面的内容所描述的,不论您使用UDP协议或是TCP协议,Winsock控件都可以允许与远程的设备连接,并且在相互之间交换数据。
因此,依据上面的面熟而言,不论您使用的是哪一种协议都可以扮演主机端和客户端的角色。
同时,当您在使用Winsock控件的过程中,这个控件不会显示在正在执行的窗体之中。
换句话说,Winsock控件是在后台运行的一种控件。
在执行过程之中,不会具有任何选用、可见的控件。
那么该如何使用Winsock控件呢?
它可以被应用在那些类型的应用程序之中呢?
以下所列出的内容,是这个控件可以应用的大致范围:
*将客户端所收集的数据,传送给主机端。
*聊天和文件传输室应用程序。
*电子公告栏。
*voip(voiceoverTCP/ip)
VBwinsock介绍
Winsock是Mcrosoftwindows提供的网络编程接口,它供了基于TCP/IP协议接口实现方法.通过网络进行的数据通信,需要用地址来表示网络中的主机.TCP/IP协议使用IP地址来作为主机的标识.实现的连接方式是通过IP地址来识别的.通常情况下每台设备运行的不止一个程序,所以为了使用应用程序间的连接,还需要建立一个地址标识.在TCP/IP中使用端口来作为标识号(PORT).IP地址+端口地址.
TCP:
实现提供双向,有序无从复的数据流服务,流量控制+差错检测+纠错等功能.
1.VB控件winsock是个运行中不可件的控件,常用属性如下:
bytereceived接收到的字节数
localhostname本地机器名
LocalIP本地IP地址
Localport本地通信程序的端口
Remotehost远程机器名
RemotehostIP远程IP地址
Remoteport远程通信程序端口
Sockethandle提供调用API得句柄参数
State连接得当前状态
Protocol使用协议
Bytereceived:
反应接收到得数据量,以字节为单位。
State:
返回当前连接状态
0关闭状态
1打开状态
2监听状态
3连接挂起
4解析域名
5正在连接
6以建立连接
7正在关闭
8出错
2.控件
accept接受一个连接请求。
格式:
对象.acceptrequestID
bind:
多协议接口下,把接口卡,IP地址捆绑再一起。
对象。
Bina端口号,ip地址
close:
关闭连接。
Close
connect:
发送连接请求。
Connect〔ip,远程端口〕
getdata:
取出数据后清除缓冲区。
Peekdata:
取出数据后不清楚缓冲区。
Getdata(peekdata)变量〔,数据类型〔,最大长度〕〕
Listen:
侦听。
Listen
Senddata:
发送数据。
Senddata
3.控件事件
Close远程设备关闭连接时触发事件
Connect建立连接,进行通信时触发
Connectrequest有连接请求时触发
Dataarrival有数据到达时触发
Error错误时触发
Sendcomplete完成一次数据传送触发
Sendprogress数据传送进度
四、设计内容
1、设计框架
2、设计程序
服务端:
OptionExplicit//强制声明变量
PrivateSubCommand1_Click()
Iftcp.State=7AndText2.Text<
>
"
"
Then//winsock=7表示已连接
tcp.SendDataText2.Text//发送数据
Text1.Text=Text1.Text&
本机:
&
Text2.Text&
vbCrLf
//显示自己发送的信息,换行显示
Text2.Text="
//文本清空
Text2.SetFocus//设置焦点
EndIf
EndSub
PrivateSubCommand2_Click()
DimForm2AsNewForm2//定义数据传输窗口
Form2.Show//显示数据传输窗口
PrivateSubForm_Load()
tcp.LocalPort=8888//本地监听端口为8888
tcp.Listen//开始监听
PrivateSubtcp_ConnectionRequest(ByValrequestIDAsLong)//连接请求
Iftcp.State<
0Thentcp.Close//如果不是关闭状态,关闭跳
tcp.Acceptrequested//接收请求ID
PrivateSubtcp_DataArrival(ByValbytesTotalAsLong)//对方数据到达
DimstrdataAsString//定义字符串型
tcp.GetDatastrdata//获取数据传递给变量strdata
客户端:
strdata&
//发送过来的信息,换行显示
图3编辑服务端主窗口
EndIf
PrivateSubtcp_DataArrival(ByValbytesTotalAsLong)
DimstrdataAsString//定义strdata为字符串
tcp.GetDatastrdata//接收数据
//在文本框显示消息,换行显示
PrivateSubzyq2_Click()
Dimp,myipAsString//定义p,myip为字符串
p=InputBox("
输入对方的端口"
)//输入端口号
myip=InputBox("
输入对方的IP"
)//输入IP
tcp.RemotePort=p//设置端口
tcp.RemoteHost=myip//设置IP
tcp.Connect//连接
图4编辑客户端主窗口
传输窗口(服务端):
OptionExplicit
PrivateSubcmdSend_Click()
DimFName_OnlyAsString
IftxtFileName="
Then
MsgBox"
你没有选择要发送的文件..."
vbCritical
ElseIffrmServer.tcpServer.State<
sckClosedThen
FName_Only$=GetFileName(txtFileName)
SendFileFName_Only$
主要作用:
发送用户选择的文件。
tcpServer.LocalPort=Port
tcpServer.Listen
bInconnection=False
Status"
侦察....(没有连接)"
设置连接端口并侦察网络。
PrivateSubForm_Unload(CancelAsInteger)
SendData"
服务器关闭,"
Pause500
tcpServer.Close
End
PrivateSubtcpServer_Close()
IftcpServer.State<
sckClosedThentcpServer.Close
Form_Load
PrivateSubtcpServer_ConnectionRequest(ByValrequestIDAsLong)
OnErrorGoToIDERROR
sckClosedThentcpServer.Close
tcpServer.AcceptrequestID
bInconnection=True
侦察...连接."
Accepted,"
ExitSub
IDERROR:
MsgBoxErr.Description,vbCritical
判断是否接收信息。
PrivateSubtcpServer_DataArrival(ByValbytesTotalAsLong)
DimCommandAsString
DimNewArrivalAsString
DimDataAsString
StaticDataCntAsLong
tcpServer.GetDataNewArrival$,vbString
Command=EvalData(NewArrival$,1)
Data$=EvalData(NewArrival$,2)
SelectCaseCommand$
Case"
OpenFile"
'
openthefile
DimFnameAsString
Fname$=App.Path&
\"
Data$
OpenFname$ForBinaryAs#1
文件打开...."
CloseFile"
closethefile
Close#1
文件传输..."
Pause3000
侦察...(连接)"
CaseElse'
a4169bytestringofincomingdata
Put#1,,NewArrival$
txtView=txtView&
NewArrival$
DataCnt&
=DataCnt&
+1
RecievingData..."
(MAX_CHUNK*DataCnt&
)&
bytes"
EndSelect
文件传输。
PrivateSubcmdBrowse_Click()
cdOpen.ShowOpen
IfNotvbCancelThen
txtFileName=cdOpen.FileName
通过通用对话框打开需要传送的文件。
图5编辑服务端文件传输窗口
传输窗口(客户端):
PrivateSubcmdConnect_Click()
bReplied=False
tcpClient.ConnectText1.Text,1256
lTIme=0
While(NotbReplied)And(lTIme<
100000)
DoEvents
lTIme=lTIme+1
Wend
IflTIme>
=100000Then
找不到服务器!
vbCritical,"
ConnectionError"
tcpClient.Close
cmdBrowse.Visible=True
cmdSend.Visible=True
实现与服务器的连接。
ElseIftcpClient.State<
发送文件。
PrivateSubtcpClient_DataArrival(ByValbytesTotalAsLong)
tcpClient.GetDataNewArrival$,vbString
Command$=EvalData(NewArrival$,1)
SelectCaseCommand
Accepted"
serveracceptedconnection
bReplied=True
连接."
ServerClosed"
Form_Load
文件发送成功..."
Connected."
CaseElse
接收数据..."
判断连接状态。
图6编辑客户端文件传输窗口
3、运行结果
图7运行客户端主窗口
图8客户端进行连接
图9输入服务端端口号
图10输入服务端IP地址
………………
五、设计总结
…………
六、设计心得
七、参考文献
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 使用VB设计聊天室 多点对多点网络程序设计 使用 VB 设计 聊天室 多点 网络程序设计
![提示](https://static.bdocx.com/images/bang_tan.gif)