您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 基于UDP的即时通信工具的设计开发
┊┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊1网络课程设计题目:基于UDP的即时通信工具的设计开发学院:计算机学院班级姓名:学号:指导教师:2015年7月8日┊┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊2基于UDP的即时通信工具的设计开发一.项目名称基于UDP的即时通信工具的设计开发(1)任务一,设计一个基于UDP的点对点通信工具,实现点对点的通信,如下图所示,用户发送的信息将在对方用户中显示,显示内容包括用户名+发送时间+发送内容。(2)任务二,设计实现一个基于UDP的群组即时通信工具,如下图所示,每个用户发送的信息将在其他用户中显示,显示内容包括用户名+发送时间+发送内容。二.项目目标(1)熟悉C#.NET开发环境(2)熟悉Socket等相关通信组件(3)通信协议的定义、封装与解析资料查阅:可以通过SocketUDPc#,和Socket异步UDPc#等关键词在网络上了解相关资料。基于UDP的群组即时通信工具输入聊天人名字发送消息给服务器端,并显示服务器端回传的消息接受客户端发送的消息,转发消息给客户端,并显示客户端的消息使用文件保存聊天信息三.设计与实现1.服务器端创建套接字(socket)将套接字绑定到一个本地的IP地址及端口上,等待接受对端数据(receive),关闭套接字。2.客户端创建套接字,向服务器发送数据(send),关闭套接字。1、流程图┊┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊3udpserver服务器udpclients客户端数据请求NOYES数据应答(图4.1.1总体流程图)开始Socket()Bind()Send()Receive()处理请求Send()Close()结束Receivesocket()┊┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊4(图4.1.2服务器模块流程2:界面设计用户界面:(用户登录界面)(用户聊天界面)开始启动服务器创建套接字,用于收发信息数据接收包发送消息结束保存配置信息读取配置信息数据接收包┊┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊5服务器界面:(服务器界面)3:主要的函数1:udpclients//用户端Form.1//用户登录界面窗体设计代码:privateSystem.Windows.Forms.TextBoxPassWord;privateSystem.Windows.Forms.Labellabel1;privateSystem.Windows.Forms.TextBoxUserName;privateSystem.Windows.Forms.Labellabel2;privateSystem.Windows.Forms.ButtonbtnLogin;功能实现函数:privatevoidbutton2_Click(objectsender,EventArgse)┊┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊6privatevoidUserName_TextChanged(objectsender,EventArgse)privatevoidPassWord_TextChanged(objectsender,EventArgse)Form.2//用户聊天界面窗体设计代码:privateSystem.Windows.Forms.ButtonbtnSend;privateSystem.Windows.Forms.ListBoxnowUser;privateSystem.Windows.Forms.RichTextBoxSendMessage;privateSystem.Windows.Forms.Labellabel1;privateSystem.Windows.Forms.Labellabel2;privateSystem.Windows.Forms.ListBoxmessage;功能实现函数:privateboollogin()//登陆函数privatevoidsend(stringtemp)//向服务器发送数据privatevoidbtnSend_Click(objectsender,EventArgse//点击发送按钮发送输入信息privatevoidlisten()//监听函数privatevoidReceive()//启动接收线程privatevoidForm2_FormClosing_1(objectsender,FormClosingEventArgse)//关闭对话框询问是否关闭privatevoidSendMessage_TextChanged(objectsender,EventArgse)privatevoidmessage_SelectedIndexChanged(objectsender,EventArgse)privatevoidForm2_Load(objectsender,EventArgse)privatevoidlabel2_Click(objectsender,EventArgse)2:udpserver//服务器From.1//服务器界面窗体设计代码:┊┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊7privateSystem.Windows.Forms.ListBoxserverInformation;privateSystem.Windows.Forms.ListBoxmessage;privateSystem.Windows.Forms.ListBoxclientsList;privateSystem.Windows.Forms.ButtonbtnDelete;privateSystem.Windows.Forms.TextBoxdeleteUser;privateSystem.Windows.Forms.ButtonbtnSaveMesssage;功能实现函数:publicForm1()privateintsearchclient(stringuserName)//查询userName用户是否在列表privateboolclientLogin(stringreceiveData,IPAddressdstIP)//登录函数处理用户登录和添加privateboolclientleave(stringuserName)//用户下线函数privatevoidshow()//显示当前服务器信息和在线用户并更新用户列表privatevoidsend(stringsendData,intnoRec)//对在线用户进行群发privatevoidlisten()//监听函数privatevoidReceive()//启动接收线程privatevoidForm1_FormClosing(objectsender,FormClosingEventArgse)privatevoidserverInformation_SelectedIndexChanged(objectsender,EventArgse)privatevoidmessage_SelectedIndexChanged(objectsender,EventArgse)privatevoidtextBox1_TextChanged(objectsender,EventArgse)privatevoidbtnSaveMesssage_Click(objectsender,EventArgse)//保存消息日志privatevoidbtnDelete_Click(objectsender,EventArgse)//删除指定用户privatevoidclientsList_SelectedIndexChanged(objectsender,EventArgse)四.测试结果┊┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊8┊┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊9┊┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊10┊┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊11五.总结与展望在UDP聊天器的设计过程中,学习了c#程序。进一步了解了udp的实现功能。加深了对理论知识和c#控件及MFCSocket的理解,掌握了socket(),,send()和的使用方使我的网络编程能力得到了提高。同时,也发现了许多不足之处,如发送信息的长度受到限制,不能满足用户更多字数的聊天需求,这个问题,将是我今后调整和修改设计的方向。在这次的课程设计中,我充分体会到团队合作的重要性。六.源代码Udpclient用户端登陆:Form1Designer:namespaceUDPSever{partialclassForm1{///summary┊┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊12///必需的设计器变量。////summaryprivateSystem.ComponentModel.IContainercomponents=null;///summary///清理所有正在使用的资源。////summary///paramname=disposing如果应释放托管资源,为true;否则为false。/paramprotectedoverridevoidDispose(booldisposing){if(disposing&&(components!=null)){components.Dispose();}base.Dispose(disposing);}#regionWindows窗体设计器生成的代码///summary///设计器支持所需的方法-不要///使用代码编辑器修改此方法的内容。////summaryprivatevoidInitializeComponent(){this.serverInformation=newSystem.Windows.Forms.ListBox();this.message=newSystem.Windows.Forms.ListBox();this.clientsList=newSystem.Windows.Forms.ListBox();this.btnDelete=newSystem.Windows.Forms.Button();this.deleteUser=newSystem.Windows.Forms.TextBox();this.btnSaveMesssage=newSystem.Windows.Forms.Button();this.SuspendLayout();//┊┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊13//serverInformation//this.serverInformation.FormattingEnabled=true;this.serverInformation.ItemHeight=15;this.serverInformation.Location=newSystem.Drawing.Point(212,51);this.serverInformation.Margin=newSystem.Windows.Forms.Padding(4);this.serverInformation.Name=serverInformation;this.serverInformation.Size=newSystem.Drawing.Size(341,124);this.serverInformation.TabIndex=0;this.serverInfo
本文标题:基于UDP的即时通信工具的设计开发
链接地址:https://www.777doc.com/doc-315457 .html