使用VB设计聊天室多点对多点网络程序设计.docx
- 文档编号:1740333
- 上传时间:2023-05-01
- 格式:DOCX
- 页数:18
- 大小:157.10KB
使用VB设计聊天室多点对多点网络程序设计.docx
《使用VB设计聊天室多点对多点网络程序设计.docx》由会员分享,可在线阅读,更多相关《使用VB设计聊天室多点对多点网络程序设计.docx(18页珍藏版)》请在冰点文库上搜索。
使用VB设计聊天室多点对多点网络程序设计
课程设计任务书
9.多点对多点网络程序设计,根据网络数据传输原理设计聊天室软件,具体要求:
1)学习计算机网络连接原理;
2)学习网络数据传输的基本原理;
3)学习网络连接的底层协议;
4)设计聊天室软件;
5)面向用户的操作界面;
6)具有文件共享功能。
一、设计目的.1
二、设计任务与要求1
三、开发软件介绍1
四、设计内容.4
1、设计框架4
2、设计程序5
3、运行结果12
五、设计总结.15
六、设计心得.16
七、参考文献.16
一、设计目的通过本课程设计的学习,学生将复习所学的专业知识,使课堂学习的理论知识应用于实践,通过本课程设计的实践使学生具有一定的实践操作能力,为学生完成毕业设计任务打下基础。
二、设计任务与要求
多点对多点网络程序设计,根据网络数据传输原理设计聊天室软件,具体要求:
1)学习计算机网络连接原理;
2)学习网络数据传输的基本原理;
3)学习网络连接的底层协议;
4)设计聊天室软件;
5)面向用户的操作界面;
6)具有文件共享功能。
三、开发软件介绍
微软公司的VisualBasic6.0是Windows应用程序开发工具,使目前最为广泛的、易学易用的面向对象的开发工具。
VisualBasic提供了大量的控件,这些控件可用于设计界面和实现各种功能,减少了编程人员的工作量,也简化了界面设计过程,从而有效的提高了应用程序的运行效率和可靠性。
故而,实现本系统VB是一个相对较好的选择。
在VisualBasic中,可通过属性、方法和事件来说明和衡
量一个对象的特征:
•事件(Event)
事件是指发生在某一对象上的事情。
事件又可分为鼠标事件
和键盘事件。
例如,在命令按钮(CommanButton)这一对象上可能发生鼠标单击(Click)、鼠标移动(MouseMove)、鼠标按下(MouseDowr)等鼠标事件,也可能发生键盘按下(KeyDowr)
等键盘事件。
总之,事件指明了对象“什么情况下做?
”,常用于定义对象发生某种反映的时机和条件。
•方法(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错误时触发
图1建立连接
Sendcomplete完成一次数据传送触发
Sendprogress数据传送进度
四、设计内容
消息发送
fc-
客
服
户
务
端
端
—
文件传输
」
1、设计框架
图2消息文件交互
2、设计程序
服务端:
变量
PrivateSubCommand1_Click()
Iftcp.State=7AndText2.Text<>""Then//winsock=7表示已连接
tcp.SendDataText2.Text//
EndIf
EndSub
DimForm2AsNewForm2
//
输窗口
Form2.Show
//
定义数据传
显示数据
PrivateSubCommand2_Click()
传输窗口
EndSub
PrivateSubForm_Load()tcp.LocalPort=8888//监听端口为8888
tcp.Listen//开始监听
本地
EndSub
PrivateSubtcp_ConnectionRequest(ByVal
requestIDAsLong)
//连接请求
Iftcp.State<>0Thentcp.Close//如果不是关
闭状态,关闭跳
tcp.Accept
requested
//接收请求ID
EndSub
PrivateSubtcp_DataArrival(ByValbytesTotalAsLong)//
对方数据到达
DimstrdataAsString//串型
定义字符
tcp.GetDatastrdata
给变量strdata
//
获取数据传递
Textl.Text=Textl.Text&"
客户端:
"&strdata&vbCrLf
//发送过来的信
息,换行显示
EndSub
图3编辑服务端主窗口
//
强制声明变量
客户端:
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()
Form2.Show
//
显示数据传输窗
定义数据传输窗口
DimForm2AsNewForm2//
EndSub
PrivateSubtcp_DataArrival(ByValbytesTotalAsLong)
DimstrdataAsString//定义strdata
为字符串
tcp.GetDatastrdata//接收数据
Text1.Text=Text1.Text&"服务端:
"&strdata&vbCrLf
EndSub
PrivateSubzyq2_Click()
Dimp,myipAsString
//
定义p,myip为字
符串
p=InputBox("输入对方的端口")
//
输入端口号
myip=InputBox("输入对方的IP")
//
输入IP
tcp.RemotePort=p
//
设置端口
tcp.RemoteHost=myip
//
设置IP
tcp.Connect
//
连接
EndSub
图4编辑客户端主窗口
传输窗口(服务端)
OptionExplicit
PrivateSubcmdSend_Click()
DimFName_OnlyAsString
IftxtFileName=""Then
MsgBox"你没有选择要发送的文件…",vbCritical
ElseIffrmServer.tcpServer.State<>sckClosedThen
FName_Only$=GetFileName(txtFileName)
SendFileFName_Only$
EndIf
EndIf
EndSub主要作用:
发送用户选择的文件。
PrivateSubForm_Load()tcpServer.LocalPort=PorttcpServer.ListenbInconnection=FalseStatus"侦察(没有连接)"
EndSub主要作用:
设置连接端口并侦察网络。
PrivateSubForm_Unload(CancelAsInteger)SendData"服务器关闭,"Pause500tcpServer.Close
End
EndSub
PrivateSubtcpServer_Close()
IftcpServer.State<>sckClosedThentcpServer.CloseForm_Load
EndSub
PrivateSubtcpServer_ConnectionRequest(ByValrequestIDAsLong)
OnErrorGoToIDERROR
IftcpServer.State<>sckClosedThentcpServer.ClosetcpServer.AcceptrequestID
bInconnection=True
Status"侦察...连接."
SendData"Accepted,"
ExitSub
IDERROR:
MsgBoxErr.Description,vbCritical
EndSub主要作用:
判断是否接收信息。
PrivateSubtcpServer_DataArrival(ByValbytesTotalAsLong)
DimCommandAsString
DimNewArrivalAsString
DimDataAsString
StaticDataCntAsLongtcpServer.GetDataNewArrival$,vbString
Command=EvalData(NewArrival$,1)
Data$=EvalData(NewArrival$,2)
SelectCaseCommand$
Case"OpenFile"'openthefile
DimFnameAsString
Fname$=App.Path&"\"&Data$
OpenFname$ForBinaryAs#1Status"文件打开"&Data$
Case"CloseFile"'closethefile
Close#1
Status"文件传输..."
Pause3000
Status"侦察...(连接)"
CaseElse'a4169bytestringofincomingdataPut#1,,NewArrival$txtView=txtView&NewArrival$DataCnt&=DataCnt&+1
Status"RecievingData..."&(MAX_CHUNK*
DataCnt&)&"bytes"
EndSelect
EndSub主要作用:
文件传输。
PrivateSubcmdBrowse_Click()
cdOpen.ShowOpen
IfNotvbCancelThen
txtFileName=cdOpen.FileName
EndIf
EndSub
主要作用:
通过通用对话框打开需要传送的文件。
图5编辑服务端文件传输窗口
传输窗口(客户端)
PrivateSubcmdConnect_Click()
bReplied=False
tcpClient.ConnectText1.Text,1256
lTIme=0
While(NotbReplied)And(lTIme<100000)
DoEvents
lTIme=lTIme+1
Wend
IflTIme>=100000Then
MsgBox"找不到服务器!
",vbCritical,"ConnectionError"
tcpClient.Close
ExitSub
EndIf
cmdBrowse.Visible=TruecmdSend.Visible=True
EndSub主要作用:
实现与服务器的连接。
PrivateSubcmdSend_Click()
DimFName_OnlyAsString
IftxtFileName=""Then
MsgBox"你没有选择要发送的文件...",vbCriticalElseIftcpClient.State<>sckClosedThen
FName_Only$=GetFileName(txtFileName)
SendFileFName_Only$
EndIf
EndIf
EndSub主要作用:
发送文件。
PrivateSubtcpClient_DataArrival(ByValbytesTotalAs
Long)
DimCommandAsString
DimNewArrivalAsString
DimDataAsString
StaticDataCntAsLong
tcpClient.GetDataNewArrival$,vbString
Command$=EvalData(NewArrival$,1)
Data$=EvalData(NewArrival$,2)
SelectCaseCommand
Case"Accepted"'serveraccepted
connection
bReplied=True
Status"连接."
Case"ServerClosed"
Form_Load
tcpClient.Close
Case"OpenFile"'openthefile
DimFnameAsString
Fname$=App.Path&"\"&Data$
OpenFname$ForBinaryAs#1
Status"文件打开"&Data$
Case"CloseFile"'closethefileClose#1
Status"文件发送成功..."
Pause3000
Status"Connected."
CaseElse
Put#1,,NewArrival$txtView=txtView&NewArrival$DataCnt&=DataCnt&+1
Status"接收数据..."&(MAX_CHUN*KDataCnt&)&"bytes"
EndSelect
EndSub
主要作用:
判断连接状态
图6编辑客户端文件传输窗口
3、运行结果
图7运行客户端主窗口
'已客户猛
[连接
-——
连接1P
Project2
图8客户端进行连接
输入対方的端口确定
取消
|8B68|
图9输入服务端端口号
图10输入服务端IP地址
五、设计总结
六、设计心得
七、参考文献
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 使用 VB 设计 聊天室 多点 网络程序设计