课程设计报告基于udp协议的网络聊天程序设计Word文档下载推荐.doc
- 文档编号:13270840
- 上传时间:2022-10-09
- 格式:DOC
- 页数:22
- 大小:525KB
课程设计报告基于udp协议的网络聊天程序设计Word文档下载推荐.doc
《课程设计报告基于udp协议的网络聊天程序设计Word文档下载推荐.doc》由会员分享,可在线阅读,更多相关《课程设计报告基于udp协议的网络聊天程序设计Word文档下载推荐.doc(22页珍藏版)》请在冰豆网上搜索。
1需求分析 2
1.1课程设计目的 2
1.2课程设计内容 2
1.3课程设计要求 2
2概要设计 2
2.1原理概述 2
2.2功能模块调用流程设计 3
3详细设计 4
3.1流程图 4
3.2运行效果图 5
3.3主要源代码 12
4项目分析与总结 17
4.1遇到的问题和解决方法 17
4.2心得体会 18
1、需求分析
1.1课程设计目的
开发一个专用于实现两台计算机之间即时通讯的软件,以方便两台计算机之间信息的交流。
,在连接并通信时,尤其是近程的即时通讯,彻底的脱离了远程的服务器,避免了和远程服务器连接时过多的浪费网络资源。
并且避免了服务器忙或与服务器无法连接时,浪费过多时间用于和服务器建立连接!
因此,这个软件是极具适应性和实用性的即时通讯软件!
本次课程设计的目的是学习基于UDP协议实现网络聊天程序,已达到学会面向无连接方式的程序设计方法,并理解网络编程中面向无连接的概念。
1.2课程设计的内容
用户数据报(UDP)是一个无连接协议,使用这种协议时,并不需要在两台计算机之间建立固定的连接,也就是说,通信双方没有服务器和客户机之分,它们之间进行的是对等通信,所以它的优势很明显,是现代通信不可或缺的一部分。
所以,利用它的优势设计一个可以实现私聊和群聊的软件,实现两台计算机间的即时通讯。
1.3课程设计要求
基于UDP协议实现一对一的聊天和一对多的聊天,提供友好的用户界面,便于用户进行操作。
根据目前使用聊天程序的用户需求显示,用户对于聊天程序主要有以下几点要求:
(1)聊天功能:
可以实现实时接收和发送文字信息,并能支持公聊和私聊的方式。
(2)用户功能:
可以查看对方的开放信息,以及发送方的IP。
2概要设计
2.1原理概述
采用UDP协议,通过服务器中转方式。
因此,现在的IP侦探在你仅仅跟对方发送聊天消息的时候是无法获取到IP的。
UDP协议是不可靠协议,它只管发送,不管对方是否收到。
但它的传输很高效,因为UDP协议排除了信息可靠传递机制,将安全和排序等功能移交给上层应用来完成,极大降低了执行时间,使速度得到了保证。
例如,腾讯采用了上层协议来保证可靠传输:
如果客户端使用UDP协议发出消息后,服务器收到该包,需要使用UDP协议发回一个应答包。
如此来保证消息可以无遗漏传输。
2.2功能模块调用流程设计:
输入组播地址及段口号
开始
初始化各个控件
不可发送消息
点击”开始聊天”按钮
进行群聊
判断是否进行群聊
判断是否进行私聊
输入IP地址及段口号
进行私聊
选择在线的私聊对象
输入发送信息
点击”发送”按钮
在”接收发信息”框中显示聊天记录
在”接收发信息”框中接收信息
点击”清屏”按钮
在”接收发信息”框中清除聊天记录
点击”断开”按钮
断开连接,不可发送信息
点击”退出”按钮
结束
N
Y
退出程序
3详细设计
3.1流程图
3.2界面设计与运行效果图:
//界面设计
//测试程序:
初始化界面,组播地址为224.100.0.1,端口号为6553。
点击开始聊天,组播地址为224.100.0.1,端口号为6553,开始群聊。
界面显示群聊接收发消息。
选择在线的私聊对象。
输入对方IP地址,进行固定的私聊。
不正确的情况——端口号为空时。
不正确的情况——超出端口号范围时。
不正确的情况——端口号不合法时。
以上情况均不能正确发送信息。
不正确的情况——组播地址非法时。
不正确的情况——发送的输入信息为空。
点击清屏按钮接收发消息框清空。
//电脑桌面程序栏中托盘图标
3.3主要源代码:
namespacechat
{
publicpartialclasschat:
Form
{
privatestaticIPAddressm_GroupAddress;
privateboolisExit=false;
privateboolisShow=true;
privateboolm_bFlag;
NotifyIconmyNotifyIcon;
//委托类delegate
delegatevoidAppendStringCallback(stringtext);
AppendStringCallbackappendStringCallback;
privatestaticUdpClientudpClient;
privatedelegatevoidSetComboBoxCallback(stringstr);
SetComboBoxCallbackset_combobox_callback;
publicchat()
{
InitializeComponent();
appendStringCallback=newAppendStringCallback(AppendString);
set_combobox_callback=newSetComboBoxCallback(SetComboBox);
m_GroupAddress=IPAddress.Parse(groupIPaddress.Text);
try
{
m_Icon1=newIcon("
20005.ico"
);
//导入图标文件
m_Icon2=newIcon("
20060.ico"
}
catch(Exceptione)
MessageBox.Show("
Error"
+e.Message,"
AnimateTray-Error"
m_bFlag=true;
}
#regionconnect_and_stop
privatevoidbtnChat_Click(objectsender,EventArgse)
ThreadreceiveThread=newThread(newThreadStart(ReceiveData));
//将线程设为后台运行
receiveThread.IsBackground=true;
receiveThread.Start();
btnChat.Enabled=false;
btnStop.Enabled=true;
txbSend.Enabled=true;
privatevoidbtnStop_Click(objectsender,EventArgse)
//必须使用组播的地址范围内的地址
Terminate();
stringHostName=Dns.GetHostName();
IPHostEntryMyEntry=Dns.GetHostByName(Dns.GetHostName());
IPAddressMyAddress=newIPAddress(MyEntry.AddressList[0].Address);
stringaddress=MyAddress.ToString();
RemComboBox(address);
udpClient.Close();
btnChat.Enabled=true;
btnStop.Enabled=false;
txbSend.Enabled=false;
#endregion
#regionReceive_events
privatevoidReceiveData()
IsValidPort(txtPort.Text);
//使用的接收端口号
intport=int.Parse(txtPort.Text);
udpClient=newUdpClient(port);
//必须使用组播的地址范围内的地址
IPAddressgroupIP=IPAddress.Parse(groupIPaddress.Text);
//50为生存时间,超时被丢弃
udpClient.JoinMulticastGroup(groupIP,50
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 报告 基于 udp 协议 网络 聊天 程序设计