




已阅读5页,还剩38页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
装订线 网络课程设计 题目:基于 udp 的即时通信工具的设计开发 学院:计算机学院班级姓名: 学号:指导教师:2015年7月8日 基于 udp 的即时通信工具的设计开发 1 项目名称 基于 udp 的即时通信工具的设计开发 (1)任务一,设计一个基于 udp 的点对点通信工具,实现点对点的通信,如下图所示,用 户发送的信息将在对方用户中显示,显示内容包括用户名+发送时间+发送内容。 (2) 任务二,设计实现一个基于 udp 的群组即时通信工具,如下图所示,每个用户发送的 信息将在其他用户中显示,显示内容包括用户名+发送时间+发送内容。 二项目目标(1)熟悉 c#.net 开发环境 (2)熟悉 socket 等相关通信组件 (3)通信协议的定义、封装与解析 资料查阅:可以通过socket udp c#, 和socket 异步 udp c#等关键词在网络上了解相关资料。 基于 udp 的群组即时通信工具l 输入聊天人名字l 发送消息给服务器端,并显示服务器端回传的消息l 接受客户端发送的消息,转发消息给客户端,并显示客户端的消息l 使用文件保存聊天信息 三设计与实现1. 服务器端创建套接字(socket)将套接字绑定到一个本地的ip地址及端口上,等待接受对端数据(receive),关闭套接字。2. 客户端创建套接字,向服务器发送数据(send ),关闭套接字。1、 流程图开 始 udpserver服务器socket() udpclients客户端socket()bind()receivesend () 数据请求 no yes处理请求 数据应答receive ()send ()close()结 束(图4.1.1总体流程图)开 始读取配置信息启动服务器创建套接字,用于收发信息数据接收包数据接收包发送消息保存配置信息结 束(图4.1.2服务器模块流程2:界面设计 用户界面: (用户登录界面) (用户聊天界面) 服务器界面:(服务器界面) 3:主要的函数1:udpclients/用户端 form.1/用户登录界面 窗体设计代码: private system.windows.forms.textbox password; private system.windows.forms.label label1; private system.windows.forms.textbox username; private system.windows.forms.label label2; private system.windows.forms.button btnlogin; 功能实现函数: private void button2_click(object sender, eventargs e) private void username_textchanged(object sender, eventargs e) private void password_textchanged(object sender, eventargs e) form.2/用户聊天界面窗体设计代码: private system.windows.forms.button btnsend; private system.windows.forms.listbox nowuser; private system.windows.forms.richtextbox sendmessage; private system.windows.forms.label label1; private system.windows.forms.label label2; private system.windows.forms.listbox message;功能实现函数: private bool login()/登陆函数 private void send(string temp)/向服务器发送数据private void btnsend_click(object sender, eventargs e/点击发送按钮发送输入信息 private void listen()/监听函数 private void receive()/启动接收线程 private void form2_formclosing_1(object sender, formclosingeventargs e) /关闭对话框询问是否关闭 private void sendmessage_textchanged(object sender, eventargs e)private void message_selectedindexchanged(object sender, eventargs e) private void form2_load(object sender, eventargs e)private void label2_click(object sender, eventargs e)2:udpserver/服务器 from.1/服务器界面窗体设计代码: private system.windows.forms.listbox serverinformation; private system.windows.forms.listbox message; private system.windows.forms.listbox clientslist; private system.windows.forms.button btndelete; private system.windows.forms.textbox deleteuser; private system.windows.forms.button btnsavemesssage; 功能实现函数:public form1() private int searchclient(string username)/查询username用户是否在列表private bool clientlogin(string receivedata,ipaddress dstip)/登录函数处理用户登录和添加 private bool clientleave(string username)/用户下线函数 private void show()/显示当前服务器信息和在线用户并更新用户列表 private void send(string senddata,int norec)/对在线用户进行群发 private void listen()/监听函数private void receive()/启动接收线程 private void form1_formclosing(object sender, formclosingeventargs e) private void serverinformation_selectedindexchanged(object sender, eventargs e) private void message_selectedindexchanged(object sender, eventargs e) private void textbox1_textchanged(object sender, eventargs e) private void btnsavemesssage_click(object sender, eventargs e)/保存消息日志 private void btndelete_click(object sender, eventargs e)/删除指定用户private void clientslist_selectedindexchanged(object sender, eventargs e)4. 测试结果 五总结与展望在udp聊天器的设计过程中,学习了c#程序。进一步了解了udp的实现功能。加深了对理论知识和c#控件及mfc socket的理解,掌握了socket(),send()和的使用方使我的网络编程能力得到了提高。同时,也发现了许多不足之处,如发送信息的长度受到限制,不能满足用户更多字数的聊天需求,这个问题,将是我今后调整和修改设计的方向。在这次的课程设计中,我充分体会到团队合作的重要性。六源代码udpclient 用户端 登陆:form1designer:namespace udpsever partial class form1 / / 必需的设计器变量。 / private system.componentmodel.icontainer components = null; / / 清理所有正在使用的资源。 / / 如果应释放托管资源,为 true;否则为 false。 protected override void dispose(bool disposing) if (disposing & (components != null) components.dispose(); base.dispose(disposing); #region windows 窗体设计器生成的代码 / / 设计器支持所需的方法 - 不要 / 使用代码编辑器修改此方法的内容。 / private void initializecomponent() this.serverinformation = new system.windows.forms.listbox(); this.message = new system.windows.forms.listbox(); this.clientslist = new system.windows.forms.listbox(); this.btndelete = new system.windows.forms.button(); this.deleteuser = new system.windows.forms.textbox(); this.btnsavemesssage = new system.windows.forms.button(); this.suspendlayout(); / / serverinformation / this.serverinformation.formattingenabled = true; this.serverinformation.itemheight = 15; this.serverinformation.location = new system.drawing.point(212, 51); this.serverinformation.margin = new system.windows.forms.padding(4); this.serverinformation.name = serverinformation; this.serverinformation.size = new system.drawing.size(341, 124); this.serverinformation.tabindex = 0; this.serverinformation.selectedindexchanged += new system.eventhandler(this.serverinformation_selectedindexchanged); / / message / this.message.formattingenabled = true; this.message.itemheight = 15; this.message.location = new system.drawing.point(212, 228); this.message.margin = new system.windows.forms.padding(4); this.message.name = message this.message.size = new system.drawing.size(341, 229); this.message.tabindex = 1; this.message.selectedindexchanged += new system.eventhandler(this.message_selectedindexchanged); / / clientslist / this.clientslist.formattingenabled = true; this.clientslist.itemheight = 15; this.clientslist.location = new system.drawing.point(1, 2); this.clientslist.margin = new system.windows.forms.padding(4); this.clientslist.name = clientslist; this.clientslist.size = new system.drawing.size(201, 454); this.clientslist.tabindex = 2; this.clientslist.selectedindexchanged += new system.eventhandler(this.clientslist_selectedindexchanged); / / btndelete / this.btndelete.backcolor = system.drawing.color.fromargb(int)(byte)(192), (int)(byte)(255), (int)(byte)(192); this.btndelete.forecolor = system.drawing.systemcolors.controldarkdark; this.btndelete.location = new system.drawing.point(453, 13); this.btndelete.margin = new system.windows.forms.padding(4); this.btndelete.name = btndelete; this.btndelete.size = new system.drawing.size(100, 29); this.btndelete.tabindex = 3; this.btndelete.text = 删除用户; this.btndelete.usevisualstylebackcolor = false this.btndelete.click += new system.eventhandler(this.btndelete_click); / / deleteuser / this.deleteuser.location = new system.drawing.point(212, 18); this.deleteuser.margin = new system.windows.forms.padding(4); this.deleteuser.name = deleteuser; this.deleteuser.size = new system.drawing.size(203, 25); this.deleteuser.tabindex = 4; this.deleteuser.textchanged += new system.eventhandler(this.textbox1_textchanged); / / btnsavemesssage / this.btnsavemesssage.backcolor = system.drawing.color.fromargb(int)(byte)(255), (int)(byte)(255), (int)(byte)(192); this.btnsavemesssage.forecolor = system.drawing.systemcolors.controldarkdark; this.btnsavemesssage.location = new system.drawing.point(405, 191); this.btnsavemesssage.margin = new system.windows.forms.padding(4); this.btnsavemesssage.name = btnsavemesssage; this.btnsavemesssage.size = new system.drawing.size(148, 29); this.btnsavemesssage.tabindex = 5; this.btnsavemesssage.text = 保存消息记录; this.btnsavemesssage.usevisualstylebackcolor = false; this.btnsavemesssage.click += new system.eventhandler(this.btnsavemesssage_click); / / form1 / this.autoscaledimensions = new system.drawing.sizef(8f, 15f); this.autoscalemode = system.windows.forms.autoscalemode.font; this.backcolor = system.drawing.systemcolors.gradientactivecaption; this.clientsize = new system.drawing.size(581, 468); this.controls.add(this.btnsavemesssage); this.controls.add(this.deleteuser); this.controls.add(this.btndelete); this.controls.add(this.clientslist); this.controls.add(this.message); this.controls.add(this.serverinformation); this.margin = new system.windows.forms.padding(4); this.name = form1; this.text = 服务器; this.formclosing += new system.windows.forms.formclosingeventhandler(this.form1_formclosing); this.load += new system.eventhandler(this.form1_load); this.resumelayout(false); this.performlayout(); #endregion private system.windows.forms.listbox serverinformation; private system.windows.forms.listbox message; private system.windows.forms.listbox clientslist; private system.windows.forms.button btndelete; private system.windows.forms.textbox deleteuser; private system.windows.forms.button btnsavemesssage; from1.csusing system;using system.collections.generic;using system.componentmodel;using system.data;using system.drawing;using system.linq;using system.text;using system.windows.forms;namespace udpclients public partial class form1 : form public form1() initializecomponent();/初始化工作 加载控件资源 分配资源 private void button2_click(object sender, eventargs e) user.username = username.text.tostring(); user.userkey = password.text.tostring(); this.dialogresult = dialogresult.ok; /表示点击按钮关闭窗口 private void form1_load(object sender, eventargs e)/分配窗口使用资源 private void username_textchanged(object sender, eventargs e) private void password_textchanged(object sender, eventargs e) program.cs using system;using system.collections.generic;using system.linq;using system.windows.forms;namespace udpclients static class program / / 应用程序的主入口点。 / stathread static void main() application.enablevisualstyles(); application.setcompatibletextrenderingdefault(false); application.run(new form2(); user.csusing system;using system.collections.generic;using system.linq;using system.text;using system.net;using system.net.socketsnamespace udpclients class user/本地用户类 public static string username;/y用户名 public static string userkey;/用户密码 public static int myrecport;/本地接收端口号 聊天:form2.designer:namespace udpclients partial class form2 / / required designer variable. / private system.componentmodel.icontainer components = null;/ / clean up any resources being used. / / true if managed resources should be disposed; otherwise, false. protected override void dispose(bool disposing) if (disposing & (components != null) components.dispose(); base.dispose(disposing); #region windows form designer generated code / / required method for designer support - do not modify / the contents of this method with the code editor. / private void initializecomponent() system.componentmodel.componentresourcemanager resources = new system.componentmodel.componentresourcemanager(typeof(form2); this.btnsend = new system.windows.forms.button(); this.nowuser = new system.windows.forms.listbox(); this.sendmessage = new system.windows.forms.richtextbox(); this.message = new system.windows.forms.listbox(); this.label1 = new system.windows.forms.label(); this.label2 = new system.windows.forms.label(); this.suspendlayout(); / btnsend / this.btnsend.location = new system.drawing.point(551, 299); this.btnsend.margin = new system.windows.forms.padding(4, 4, 4, 4); this.btnsend.name = btnsend; this.btnsend.size = new system.drawing.size(127, 56); this.btnsend.tabindex = 0; this.btnsend.text = 发送; this.btnsend.usevisualstylebackcolor = true; this.btnsend.click += new system.eventhandler(this.btnsend_click); / / nowuser / this.nowuser.formattingenabled = true; this.nowuser.itemheight = 15; this.nowuser.location = new system.drawing.point(29, 29); this.nowuser.margin = new system.windows.forms.padding(4, 4, 4, 4); this.nowuser.name = nowuser; this.nowuser.size = new system.drawing.size(119, 259); this.nowuser.tabindex = 1; / / sendmessage / this.sendmessage.location = new system.drawing.point(177, 305); this.sendmessage.margin = new system.windows.forms.padding(4, 4, 4, 4); this.sendmessage.name = sendmessage; this.sendmessage.size = new system.drawing.size(364, 42); this.sendmessage.tabindex = 2; this.sendmessage.text = ; this.sendmessage.textchanged += new system.eventhandler(this.sendmessage_textchanged); / / message / this.message.backcolor = system.drawing.color.white; this.message.font = new system.drawing.font(微软雅黑, 9f, system.drawing.fontstyle.regular, system.drawing.graphicsunit.point, (byte)(134); this.message.formattingenabled = true; this.message.itemheight = 20; this.message.location = new system.drawing.point(177, 31); this.message.margin = new system.windows.forms.padding(4, 4, 4, 4); this.message.name = message; this.message.size = new system.drawing.size(499, 244); this.message.tabindex = 3; this.message.selectedindexchanged += new system.eventhandler(this.message_selectedindexchanged); / / label1 / this.label1.autosize = true; this.label1.backcolor = system.drawing.systemcolors.gradientactivecaption; this.label1.location = new system.drawing.point(175, 9); this.label1.margin = new system.windows.forms.padding(4, 0, 4, 0); this.label1.name = label1; this.label1.size = new system.drawing.size(67, 15); this.label1.tabindex = 5; this.label1.text = 聊天记录; / / label2 / this.label2.autosize = true; this.label2.backcolor = system.drawing.systemcolors.gradientactivecaption; this.label2.location = new system.drawing.point(29, 9); this.label2.margin = new system.windows.forms.padding(4, 0, 4, 0); this.label2.name = label2; this.label2.size = new system.drawing.size(67, 15); this.label2.tabindex = 6; this.label2.text = 用户列表; this.label2.click += new system.eventhandler(this.label2_click); / / form
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 稿件翻译服务合作合同5篇
- 员工劳动合同正式版范本2篇
- 垂直铺塑工程合同3篇
- 天车维修检测合同范本
- 投资入股公司合同范本
- 橱柜安装的合同范本
- 抵押合同范本协议
- 即墨路租房合同范本
- 台球厂商文字合同范本
- 小型水池建筑合同范本
- 2025年CAD机械制图考试题库及答案
- Z20名校联盟(浙江省名校新高考研究联盟)2026届高三第一次联考 语文试卷(含答案详解)
- 2025工会基础知识考试题库及参考答案
- 2025年安徽省宿州市辅警协警笔试笔试测试卷(含答案)
- 六年级上册语文1-8单元习作范文
- 2024广西公需课高质量共建“一带一路”谱写人类命运共同体新篇章答案
- 2025年国家法律职业资格考试《客观题卷一》模拟题及答案
- 冷板液冷标准化及技术优化白皮书
- 2025四川成都新都投资集团有限公司招聘23人笔试历年参考题库附带答案详解
- 中班健康《我会用伞》
- DG-TJ08-2461-2024 旧住房更新改造查勘标准
评论
0/150
提交评论