基于UDP网上聊天Word格式.docx
- 文档编号:19447118
- 上传时间:2023-01-06
- 格式:DOCX
- 页数:9
- 大小:113.57KB
基于UDP网上聊天Word格式.docx
《基于UDP网上聊天Word格式.docx》由会员分享,可在线阅读,更多相关《基于UDP网上聊天Word格式.docx(9页珍藏版)》请在冰豆网上搜索。
答辩教师签名:
教研室意见
总成绩:
室主任签名:
年月日
课程设计任务书
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
在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
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&
3测试
运行程序,ConnectwithIP中将自动获取本地IP;
在LocalPort中填入一个端口号,如1000(非系统占用);
在RemotePort中填入要连接的计算机的通讯接收端口号如1000。
本实验是在一台计算机上测试,如要进行两台计算机的通讯,则在此填入另外接收计算机的接收通讯端口号。
单击Connect,在文本框内输入消息,按回车键,消息成功发送,如图3.1所示,可以实现通信。
图3.1测试界面
总结
课程设计的过程是艰辛的,但是收获却是很大的。
这次课程设计我主要是应用以前学习的网络编程以及vb的一些只是,综合起来才完成了这个网络通讯的软件,虽然软件很小,但是付出却是艰辛的。
首先,综合课程设计让我把以前学习到的知识得到巩固和进一步的提高认识,对已有知识有了更进一步的理解和认识,再次,我在课程设计中碰到了很多的问题,我通过查阅相关书籍,资料,通过自己钻研,特别是得到了李征老师的谆谆教导,李老师给予了我很大的帮助,不仅给了我思路上的开阔,还让我认识到了自己对以前所学知识的不足方面。
随着社会发展,internent的迅速普及,以及飞速发展,人们对实时通信的要求越来越迫切,需求日益增加,网络聊天已经成为了一大时尚,不少人都有这样的经历。
这次的课程设计我主要应用所学,通过在vb编程环境下,运用流式套接字知识,进行基于UDP的网上聊天软件的设计,它易于实现两台计算机之间建立固定的连接,这是它的一大优势。
当然,通过这次课程设计,我也发现了自身的很多不足之处,在以后的学习中,我会不断的完善自我,不断进取,能使自己在网络编程这方面有一个大的发展。
参考文献
[1]萧秋水,文娟.网络编程之vb篇.北京.清华出版社.2001
[2]方敏,张彤.网络应用程序设计.安.安电子科技大学出版社.005
[3]黄超.indows下的网络编程.北京.人民邮电出版社.2003
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 UDP 网上聊天