使用VB设计聊天室多点对多点网络程序设计.docx

上传人:b****2 文档编号:1740333 上传时间:2023-05-01 格式:DOCX 页数:18 大小:157.10KB
下载 相关 举报
使用VB设计聊天室多点对多点网络程序设计.docx_第1页
第1页 / 共18页
使用VB设计聊天室多点对多点网络程序设计.docx_第2页
第2页 / 共18页
使用VB设计聊天室多点对多点网络程序设计.docx_第3页
第3页 / 共18页
使用VB设计聊天室多点对多点网络程序设计.docx_第4页
第4页 / 共18页
使用VB设计聊天室多点对多点网络程序设计.docx_第5页
第5页 / 共18页
使用VB设计聊天室多点对多点网络程序设计.docx_第6页
第6页 / 共18页
使用VB设计聊天室多点对多点网络程序设计.docx_第7页
第7页 / 共18页
使用VB设计聊天室多点对多点网络程序设计.docx_第8页
第8页 / 共18页
使用VB设计聊天室多点对多点网络程序设计.docx_第9页
第9页 / 共18页
使用VB设计聊天室多点对多点网络程序设计.docx_第10页
第10页 / 共18页
使用VB设计聊天室多点对多点网络程序设计.docx_第11页
第11页 / 共18页
使用VB设计聊天室多点对多点网络程序设计.docx_第12页
第12页 / 共18页
使用VB设计聊天室多点对多点网络程序设计.docx_第13页
第13页 / 共18页
使用VB设计聊天室多点对多点网络程序设计.docx_第14页
第14页 / 共18页
使用VB设计聊天室多点对多点网络程序设计.docx_第15页
第15页 / 共18页
使用VB设计聊天室多点对多点网络程序设计.docx_第16页
第16页 / 共18页
使用VB设计聊天室多点对多点网络程序设计.docx_第17页
第17页 / 共18页
使用VB设计聊天室多点对多点网络程序设计.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

使用VB设计聊天室多点对多点网络程序设计.docx

《使用VB设计聊天室多点对多点网络程序设计.docx》由会员分享,可在线阅读,更多相关《使用VB设计聊天室多点对多点网络程序设计.docx(18页珍藏版)》请在冰点文库上搜索。

使用VB设计聊天室多点对多点网络程序设计.docx

使用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地址

五、设计总结

六、设计心得

七、参考文献

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2