基于UDP网上聊天.docx

上传人:b****5 文档编号:6433650 上传时间:2023-01-06 格式:DOCX 页数:9 大小:113.57KB
下载 相关 举报
基于UDP网上聊天.docx_第1页
第1页 / 共9页
基于UDP网上聊天.docx_第2页
第2页 / 共9页
基于UDP网上聊天.docx_第3页
第3页 / 共9页
基于UDP网上聊天.docx_第4页
第4页 / 共9页
基于UDP网上聊天.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

基于UDP网上聊天.docx

《基于UDP网上聊天.docx》由会员分享,可在线阅读,更多相关《基于UDP网上聊天.docx(9页珍藏版)》请在冰豆网上搜索。

基于UDP网上聊天.docx

基于UDP网上聊天

 

网络工程课程设计

设计说明书

基于UDP的网上聊天程序

学生姓名

王博伟

学号

班级

成绩

指导教师

计算机科学与技术系

2007年1月5日

网络工程课程设计评阅书

题目

基于UDP的网上聊天程序

学生姓名

王博伟

学号

指导教师评语及成绩

 

指导教师签名:

年月日

答辩评语及成绩

 

答辩教师签名:

年月日

教研室意见

总成绩:

室主任签名:

年月日

课程设计任务书

2006—2007学年第一学期

专业:

计算机科学与技术学号:

姓名:

王博伟

课程设计名称:

网络工程课程设计

设计题目:

基于UDP的网上聊天程序

完成期限:

自2006年12月25日至2007年1月5日共2周

设计依据、要求及主要内容(可另加附页):

 

指导教师(签字):

教研室主任(签字):

批准日期:

年月日

摘要

UDP(UserDatagramProtocol)是一种无连接协议,与TCP操作不同,计算机间并不需要建立一个连接,同时,一个UDP应用可同时作为应用的客户或服务器方。

本设计采用VB作为开发工具,利用Socket套接字实现了基于UDP协议的应用程序通信,并完成了对等聊天程序的设计。

关键词:

UDP;Socket;数据报;通信

目录

1课题描述……………………………………………………………………1

2设计过程……………………………………………………………………2

2.1主窗体设计…………………………………………………………2

2.2与远端聊天程序互连………………………………………………2

2.3向远端发送消息……………………………………………………4

2.4接收远端程序发送的消息…………………………………………5

3测试…………………………………………………………………………6

总结……………………………………………………………………………7

参考文献………………………………………………………………………8

1课题描述

随着社会发展,Internent的迅速普及,人们对实时通信的要求越来越迫切,需求日益增加,网络聊天已经成为了一大时尚,不少人都有这样的经历。

用户数据报协议(UDP)是一个无连接协议,使用这种协议时,并不需要在两台计算机之间建立固定的连接,也就是说,通信双方没有服务器和客户机之分,它们之间进行的是对等通信。

所以它的优势很明显。

是现代通信不可或缺的一部分。

本课题利用Socket套接字实现主机之间的数据通信,并设计一个网上聊天程序,实现基于UDP的通信。

开发工具:

VisualBasic

2设计过程

本次设计的基于UDP的网上聊天程序易于实现两台计算机之间建立固定的连接,适合一般用途通信的需要。

2.1主窗体设计

首先,创建一个新项目,接下来设计主窗体如图2.1所示。

并在窗体上添加一个运行时不可见的winsock控件。

图2.1主窗体

2.2与远端聊天程序互连

当主窗体加载时,我们首先将本地计算机的IP地址填充到ConnectwithIP文本框中作为默认值。

代码如下:

PrivateSubForm_Load()

Show

txtRemoteIP=Winsock1.LocalIP

EndSub

当用户填写远端聊天程序的IP地址后,及双方事先约定好的端口号时(注意:

本地控件的RemotePort属性应该设为对方控件的LocalPort属性,这一点对于对方来说也一样),单击Connect按钮就可以实现互连。

此外我们不将远端聊天程序称为服务器,因为在聊天过程中双方的地位是对等的。

单击Connect按钮时的处理代码如下所示:

PrivateSubcmdConnect_Click()

OnErrorGoToErrHandler

WithWinsock1

'Settheremotehostproperty

.RemoteHost=Trim(txtRemoteIP)

'Settheremoteportproperty.

'Thisshouldbeequaltothe

'localhostpropertyofthe

'remotemachine.

.RemotePort=Trim(txtRemotePort)

'Thelocalportpropertycannotbe

'changed,socheckifithasalready

'beenset.

If.LocalPort=EmptyThen

.LocalPort=Trim(txtLocalPort)

Frame2.Caption=.LocalIP

.Bind.LocalPort

EndIf

EndWith

'Makesurethattheusercan'tchange

'thelocalport

txtLocalPort.Locked=True

'Showthecurrentstatusoftheconnectionin

'thestatusbar

StatusBar1.Panels

(1).Text="Connectedto"&Winsock1.RemoteHost&""

Frame1.Enabled=True

Frame2.Enabled=True

Label4.Visible=True

Text2.SetFocus

ExitSub

ErrHandler:

MsgBox"Winsockfailedtoestablishconnectionwithremoteserver",vbCritical

EndSub

在cmdConnect_Click过程中,UDP对等聊天程序执行了如下的几个步骤:

(1)读取ConnectwithIP文本框内容填充WinSock控件的RemoteHost属性。

(2)读取RemotePort文本框内容填充WinSock控件的RemotePort属性。

(3)读取LocalPort文本框内容填充WinSock控件的LocalPort属性。

(4)改变对话内容输入栏的标题提示。

(5)调用WinSock控件的Bind方法绑定本地端口。

(6)将连接状态在状态栏上显示出来。

(7)将本地端口值锁定,不允许用户再做更改。

2.3向远端发送消息

当用户在窗口下部的文本框中输入了一行文本并敲击回车键时,我们的程序就应该将用户所输入的内容及时发送给远端的聊天程序(而且应该发向已经指定的RemotePort端口),这个过程是在Text2文本框的KeyPress事件中处理完成的(因为我们需要从中检测用户敲击的是否回车键),如下所示:

PrivateSubText2_KeyPress(KeyAsciiAsInteger)

'Thepositionofthelastlinefeedwithinthetext

StaticLast_Line_FeedAsLong

'Thenewlineoftext

DimNew_LineAsString

'Resetthepositionofthelastlinefeedifthe

'userhasclearthechatwindow

IfTrim(Text2)=vbNullStringThenLast_Line_Feed=0

'IftheuserpressedEnter...

IfKeyAscii=13Then

'Getthenewlineoftext

New_Line=Mid(Text2,Last_Line_Feed+1)

'Savethepositionofthecurrentlinefeed

Last_Line_Feed=Text2.SelStart

'Sendthenewtextacrossthesocket

Winsock1.SendDataNew_Line

StatusBar1.Panels

(2).Text="Sent"&(LenB(New_Line)/2)&"bytes"

EndIf

EndSub

Text2_KeyPress所做的工作就是首先检测用户敲击的是否是回车键,如果是,则获取用户最新输入的一行文本,然后调用WinSock控件的SendData方法将其发送出去并更新状态栏显示的连接状态。

2.4接收远端程序发送的消息

当远端程序有消息发送过来时,系统会在固有的端口上提供缓冲并通知我们的程序,此时WinSock 控件的DataArrival事件将被触发,如下所示:

PrivateSubWinsock1_DataArrival(ByValbytesTotalAsLong)

'New_Textisthetextthathasjustarrived

'fromacrossthesocket

DimNew_TextAsString

'Getthenewtext

Winsock1.GetDataNew_Text

'Showthenewtext

Text1.SelText=New_Text

Frame1.Caption=Winsock1.RemoteHostIP

,Showthebytesizeofthistransmissioninthestatusbar

StatusBar1.Panels

(2).Text="Recieved"&bytesTotal&"bytes"

EndSub

3测试

运行程序,ConnectwithIP中将自动获取本地IP;在LocalPort中填入一个端口号,如1000(非系统占用);在RemotePort中填入要连接的计算机的通讯接收端口号如1000。

本实验是在一台计算机上测试,如要进行两台计算机的通讯,则在此填入另外接收计算机的接收通讯端口号。

单击Connect,在文本框内输入消息,按回车键,消息成功发送,如图3.1所示,可以实现通信。

图3.1测试界面

总结

课程设计的过程是艰辛的,但是收获却是很大的。

这次课程设计我主要是应用以前学习的网络编程以及vb的一些只是,综合起来才完成了这个网络通讯的软件,虽然软件很小,但是付出却是艰辛的。

首先,综合课程设计让我把以前学习到的知识得到巩固和进一步的提高认识,对已有知识有了更进一步的理解和认识,再次,我在课程设计中碰到了很多的问题,我通过查阅相关书籍,资料,通过自己钻研,特别是得到了李征老师的谆谆教导,李老师给予了我很大的帮助,不仅给了我思路上的开阔,还让我认识到了自己对以前所学知识的不足方面。

随着社会发展,internent的迅速普及,以及飞速发展,人们对实时通信的要求越来越迫切,需求日益增加,网络聊天已经成为了一大时尚,不少人都有这样的经历。

用户数据报协议(UDP)是一个无连接协议,使用这种协议时,并不需要在两台计算机之间建立固定的连接,也就是说,通信双方没有服务器和客户机之分,它们之间进行的是对等通信。

所以它的优势很明显。

是现代通信不可或缺的一部分。

这次的课程设计我主要应用所学,通过在vb编程环境下,运用流式套接字知识,进行基于UDP的网上聊天软件的设计,它易于实现两台计算机之间建立固定的连接,这是它的一大优势。

当然,通过这次课程设计,我也发现了自身的很多不足之处,在以后的学习中,我会不断的完善自我,不断进取,能使自己在网络编程这方面有一个大的发展。

参考文献

[1]萧秋水,文娟.网络编程之vb篇.北京.清华出版社.2001

[2]方敏,张彤.网络应用程序设计.安.安电子科技大学出版社.005

[3]黄超.indows下的网络编程.北京.人民邮电出版社.2003

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

当前位置:首页 > 工程科技 > 能源化工

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

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