VB语言对UDP聊天系统设计Word文档格式.docx

上传人:b****6 文档编号:17796419 上传时间:2022-12-10 格式:DOCX 页数:25 大小:863.14KB
下载 相关 举报
VB语言对UDP聊天系统设计Word文档格式.docx_第1页
第1页 / 共25页
VB语言对UDP聊天系统设计Word文档格式.docx_第2页
第2页 / 共25页
VB语言对UDP聊天系统设计Word文档格式.docx_第3页
第3页 / 共25页
VB语言对UDP聊天系统设计Word文档格式.docx_第4页
第4页 / 共25页
VB语言对UDP聊天系统设计Word文档格式.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

VB语言对UDP聊天系统设计Word文档格式.docx

《VB语言对UDP聊天系统设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《VB语言对UDP聊天系统设计Word文档格式.docx(25页珍藏版)》请在冰豆网上搜索。

VB语言对UDP聊天系统设计Word文档格式.docx

mondialog

2.2winsock控件的介绍

1.Winsck控件的主要属性

属性名

说明

BytesReceived

返回接收的数据,可以用GetData方法来获取它

LocalHostName

返回本机名

LocalIP

返回本机IP

LocalPort

返回或设置本机所用的端口,如果为0则为随机产生

Protocol

返回通信所用的协议

RemoteHostName

返回通信对方的计算机名

RemoteHostIP

返回通信对方的IP

State

返回Winscok的当前状态,取值如下

∙sckClosed(常量为0):

关闭状态

∙sckOpen(常量为1):

打开状态

∙sckListening(常量为2):

侦听状态

∙sckConnectionPending(常量为3):

连接状态

∙sckResolvingHost(常量为4):

解析主机中

∙sckHostResolved(常量为5):

已解析主机

∙sckConnecting(常量为6):

正在连接

∙sckConnected(常量为7):

已经连接

∙sckClosing(常量为8):

客户端正在关闭

∙sckError(常量为9):

连接发生错误

2.Winsock的主要方法:

方法名

作用

listen

使服务器程序处于侦听状态,等待客户端的连接请求

connect

用于客户端向远程发送一个连接请求,语法:

Winsock.connect[IP,Port]

Accept

用于服务器接收一个远程客户端的连接请求,语法:

Winsock.AcceptrequestID

sendData

用于向远程发送数据,语法:

Winsock.sendData数据

getData

用于接收远程发送来的数据,语法:

Winsock.getData变量

Close

关闭通信

3.Winsock的主要事件:

事件名

Connect

当服务器接收客户端请求时,服务端发生的事件

DataArrival

有数据到达时发生的事件,可以在这个事件中来getData发送来的数据

ConnectionRequest

客户端用Connect方法时服务器发生的事件,可以在这个事件中来Accept一个连接请求

SendProgress

发送数据中发生的事件,可以在这个事件中来标示当前已经发送多少数据

SendComplete

发送数据完成发生的事件

Error

通信发生错误时发生的事件

关闭通信时发生的事件

第三章实验实验步骤和主要是想

3.1实验步骤

如何选用适用的协议

当您准备开始使用Winsock控件之前,首要的工作是如何选择适用的协议类型。

如同先前所述的,您可以选择TCP协议或是UDP协议中的一种。

但是这两种协议的差异点在哪里呢?

虽然,它们同样可以使用在Internet或是Internet环境之中,但是主要的差异在于连接的状态。

以下是这两种协议的特点说明:

TCP协议是属于面向连接的协议。

所谓的面向连接协议是指——“在您可以交换数据之前,在两个终端设备之间必须连接成功”。

同时,在网络的基础理论之中,都会特别强调TCP具有错误核对的功能。

也就是说,在数据的传送过程中,如果发生错误或是数据无法传达对方时,TCP协议将会重复尝试着重新传送数据。

因此,核对以及重新传送的能力,因此起传输效率会比Internet协议或是巨域网络协议差一些(netBIEUI、IPX、AppleTalk)。

UDP协议是属于无面向连接协议。

这种协议为适用在两个设备之间,适用于信息传送以及数据的传输方面。

但是在使用时,必须注意当你将信息送出时,对方可能已经离线,因而无法接收到数据,而您也无法实时察觉到对方已经离线。

此外,使用UDP协议的最大数据传送量,完全取决于网络的传输量。

因此,此种协议较为适用于局域网络。

因此,当您在建立应用程序并且选用适当的协议之前,务必先依据应用程序使用的环境来选择适用的协议。

UDP连接的基础

在建立UDP的应用程序时,其过程会比TCP协议简单许多。

这是由于UDP协议在数据传送之前,可以不需要特别明确的连接方式。

但是,在上述的TCP连接方式之中,Winsocke控件必须设置在“监听(Linsten)”状态之下,同时在客户端准备与主机进行连接时,主机端也必须要使用Accept方法来允许客户端所要求的连接。

反观在UDP协议方面,双方仅仅需要使用Bind方法,即可与对方连接并且传输数九,因此,UDP协议连接过程的处理方式确实比TCP简单许多。

下面介绍使用UDP协议来传送信息的过程。

Winsock控件的作用简单说就是可以用于两台或多台机器间通信,这里不多说这个控件的作用了,因为在以后的介绍中我们会了解到这个控件的强大功能的,如可以用来做聊天软件等……

废话不多说,来看看他有些什么重要的属性、方法和事件吧!

在VB6.0中的工具箱里默认情况下是没有这个控件的,添加方法如下:

在工具箱上右击,选择[部件],然后在部件对话框中选择"

MicrosoftWinsockControl6.0"

,后确定即可。

如果没有这个复选框的话,请点击[浏览]按钮后在打开的[添加ActiveX控件]对话框选择MSWINSCK.ocx后选择打开,再点确定即可。

第四章实验模块设计及功能

4.1数据库的使用

数据库的还原及备份:

1.新建数据库:

新建数据库:

命名为“yonghu”

打开数据库的表:

新建表命名为“yonghu”

如图:

写入一行内容方便写程序

4.2UDP模块设计

4.2.1实验设计主要是想

当本机登录聊天模块时,怎么知道远程计算机是否在线!

(1)、应用端口号来判断

就是winsock绑定端口,然后发送信息给对方,对方通过发过来的信息的远程端口号,判断该执行那些命令,然后让软件自动的发送文件给对方!

比如登录界面绑定个winsock端口,登录时像整个局域网发送信息,对方接受登录发来的信息,告诉自己上线机子,同时判断发送过来的远程端口,如果端口是登录发来信息的端口,那么就自动回馈个信息各对方告诉他我也在线!

(2)、应用数据库来判断:

在数据库中建立表格两行,第一列为默认用户名“xxx”,第二列为“ip地址”。

当自己上线时,向局域网广播自己的ip地址及用户名,本机将在数据库中添加本机ip地址,默认用户名“xxx”,当登录之后会定时向局域网广播自己的ip地址(时间为1ms)。

远程计算机进行判断,第一次广播在线后,远程计算机将在数据库中添加本机的ip地址,本机第二次广播后,远程计算机将收到的ip地址与数据库中的内容进行比较,存在跳出sub,不再多次显示在线,不存在显示一次并保持与存入数据库。

到本机下线时,远程计算机将删除数据库中的本机ip地址,而本机将删除所有ip地址。

4.2.2实验方案一模块设计图

1.实验方案一(应用端口号的模块)

(1)、登录模块图

(2)、发送接受模块图

(3)、提示模块图

2.实验方案二(应用数据库的模块)

(2)、登录后的窗体

(3)、发送接受模块图

总结

经过几天的学习,研究和开发,我们小组选择的课题基本完成。

其功能基本符合网络实训的要求,能够查询课程,添加课程,修改课程等。

虽然由于自己知识上的不足,有些地方有少许错误和容错性能比较低,功能还不够完善,但是还是可以基本完成课程开设系统应有的功能。

在实训过程我会到了许多知识,这也是在大学里第一次比较完整的完成一个小项目,虽然过程中遇到了许多困难,在同学和老师的帮助下一一克服了。

通过不断的发现问题,总结问题和解决问题的过程,使我在此次实训设计活动中不断的提高,和得到了宝贵的经验。

参考文献

1、刘兵.计算机网络概论.中国水利水电出版社

2、何玉洁麦中凡.数据库原理及应用.人民邮电出版社

3、龚沛曾杨志强陆慰民.VisualBasic程序设计教程.高等教育出版社

4、明日科技高春艳李俊民刘斌斌.VisualBasic程序开发范例宝典.人民邮电出版社

致谢

这是我们的第最后一次参加实训了,但这门课程实训给我们提供了许多在今后的工作,提供了很好的基础。

所以我很感谢学校对我们的重视,给我了这次实训的机会和良好的实训环境。

在这次实训中,我们小组在组长的带领下,积极工作,各尽所能,顺利的完成了实训任务。

在这里,对其他同学的努力,也是不得不提的,大家都是在自己负责的部分,兢兢业业,非常认真。

所以,我们才能得到最后的成功。

一个星期的时间很快过去了,虽然董老师为了我们能够更充分的准备给了我们一个月的时间去准备,但是我们一直都是看资料准备,真正动手去做是在这短短的一个星期的时间。

在这次实训的整个完成过程中,我们过的非常充实和有收获,组长带着我们从看教学视频了解UDP和数据库到看例子了解实践去做,虽然系统并不是非常的完满,但是让我们了解了的知识是丰富的。

在此一定要感谢董老师,是他对我们的严格要求锻炼了我们自己去动手去尝试,解决问题的能力,让我们获益匪浅。

只有自己动手试出来的,才真正是自己的。

我们的组员也非常团结,认真对待组长分给我们的任务,我们也从中懂得了团队精神的重要性。

很快我们就要大四了,这个学期的实训可能将是我们大学四年的最后一次实训,我们相当重视、珍惜这次机会,而这次实训的结果将是我们今后我们工作、学习中遇到新的、不会的问题可以从容不迫的面对的一个重要基石,促进我们不断前进。

附录

方案一代码(应用端口号)

(1)、登录模块代码

PrivateSubCommand1_Click()

DimdataAsString

DimsAsString

data="

用户:

"

+Text1.Text+"

IP:

+Me.Winsock1.LocalIP

Me.Winsock1.RemoteHost="

172.16.255.255"

Me.Winsock1.RemotePort=4601

Me.Winsock1.SendDatadata

Me.Winsock1.RemotePort=4700

s=Text1.Text

127.0.0.1"

Me.Winsock1.SendDatas

Me.Hide

Form1.Show

EndSub

PrivateSubCommand2_Click()

Dimdata1AsString

DimdAsString

d=Text1

data1="

+Text1+"

+Me.Winsock1.LocalIP+"

我下线了!

Me.Winsock1.SendDatadata1

Me.Winsock1.SendDatad

UnloadForm1

UnloadForm2

UnloadForm4

PrivateSubForm_Load()

Me.Winsock1.Protocol=sckUDPProtocol

Me.Winsock1.Bind4601

PrivateSubWinsock1_DataArrival(ByValbytesTotalAsLong)

DimxAsString

Dimdata3AsString

Dimdata4AsString

Me.Winsock1.GetDatax

Text2=Me.Winsock1.RemotePort

Text3=x

IfText2=4601Then

IfMe.Winsock1.LocalIP=Me.Winsock1.RemoteHostIPThen

c=Me.Winsock1.RemoteHostIP

data4="

+c+"

Me.Winsock1.SendDatadata3

EndIf

IfMe.Winsock1.RemoteHostIP<

>

Me.Winsock1.LocalIPThen

data3="

(2)、发送接受模块

Form1.Hide

Form2.Show

Dimdata2AsString

DimbAsString

DimeAsString

IfText3="

Then

Form4.Show

IfText3<

"

e=Text3.Text

data2=Text2.Text

data=data2+"

:

+vbCrLf+Text1.Text

+e+"

Text4=Text4+Text2+"

+vbCrLf+Text1+vbCrLf+CStr(Now())+vbCrLf

Text4.SelStart=Len(Text4.Text)

Text1.Text=clr

PrivateSubCommand3_Click()

IfText7="

CommonDialog1.Action=3

Text4.ForeColor=CommonDialog1.Color

ElseIfText7=1Then

Text2.ForeColor=CommonDialog1.Color

ElseIfText7=2Then

Text3.ForeColor=CommonDialog1.Color

ElseIfText7=3Then

ElseIfText7=4Then

Text1.ForeColor=CommonDialog1.Color

ElseIfText7=5Then

Text6.ForeColor=CommonDialog1.Color

PrivateSubCommand4_Click()

IfText8="

CommonDialog1.Flags=cdlCFBothOrcdlCFEffects

CommonDialog1.Action=4

Text4.FontSize=CommonDialog1.FontSize

Text4.FontBold=CommonDialog1.FontBold

Text4.FontItalic=CommonDialog1.FontItalic

Text4.FontStrikethru=CommonDialog1.FontStrikethru

Text4.FontUnderline=CommonDialog1.FontUnderline

ElseIfText8=1Then

Text2.FontSize=CommonDialog1.FontSize

Text2.FontBold=CommonDialog1.FontBold

Text2.FontItalic=CommonDialog1.FontItalic

Text2.FontStrikethru=CommonDialog1.FontStrikethru

Text2.FontUnderline=CommonDialog1.FontUnderline

ElseIfText8=2Then

Text3.FontSize=CommonDialog1.FontSize

Text3.FontBold=CommonDialog1.FontBold

Text3.FontItalic=CommonDialog1.FontItalic

Text3.FontStrikethru=CommonDialog1.FontStrikethru

Text3.FontUnderline=CommonDialog1.FontUnderline

ElseIfText8=3Then

ElseIfText8=4Then

Text1.FontSize=CommonDialog1.FontSize

Text1.FontBold=CommonDialog1.FontBold

Text1.FontItalic=CommonDialog1.FontItalic

Text1.FontStrikethru=CommonDialog1.FontStrikethru

Text1.FontUnderline=CommonDialog1.FontUnderline

ElseIfText8=5Then

Text6.FontSize=CommonDialog1.FontSize

Text6.FontBold=CommonDialog1.FontBold

Text6.FontItalic=CommonDialog1.FontItalic

Text6.FontStrikethru=CommonDialog1.FontStrikethru

Text6.FontUnderline=CommonDialog1.FontUnderline

Me.Winsock1.Bind4700

Text4.Locked=True

Text6.Locked=True

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

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1