




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、装订线 网络课程设计 题目:基于 UDP 的即时通信工具的设计开发 学院:计算机学院班级姓名: 学号:指导教师:2015年7月8日 基于 UDP 的即时通信工具的设计开发 1 项目名称 基于 UDP 的即时通信工具的设计开发 (1)任务一,设计一个基于 UDP 的点对点通信工具,实现点对点的通信,如下图所示,用 户发送的信息将在对方用户中显示,显示内容包括用户名+发送时间+发送内容。 (2) 任务二,设计实现一个基于 UDP 的群组即时通信工具,如下图所示,每个用户发送的 信息将在其他用户中显示,显示内容包括用户名+发送时间+发送内容。 二项目目标(1)熟悉 C#.NET 开发环境 (2)熟悉
2、 Socket 等相关通信组件 (3)通信协议的定义、封装与解析 资料查阅:可以通过Socket UDP c#, 和Socket 异步 UDP c#等关键词在网络上了解相关资料。 基于 UDP 的群组即时通信工具l 输入聊天人名字l 发送消息给服务器端,并显示服务器端回传的消息l 接受客户端发送的消息,转发消息给客户端,并显示客户端的消息l 使用文件保存聊天信息 三设计与实现1. 服务器端创建套接字(socket)将套接字绑定到一个本地的IP地址及端口上,等待接受对端数据(receive),关闭套接字。2. 客户端创建套接字,向服务器发送数据(send ),关闭套接字。1、 流程图开 始 ud
3、pserver服务器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.Fo
4、rms.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(ob
5、ject 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; pri
6、vate 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
7、_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, EventAr
8、gs 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 Sys
9、tem.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 voi
10、d 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 s
11、ender, 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. 测试结果 五总结与
12、展望在UDP聊天器的设计过程中,学习了c#程序。进一步了解了udp的实现功能。加深了对理论知识和c#控件及MFC Socket的理解,掌握了socket(),send()和的使用方使我的网络编程能力得到了提高。同时,也发现了许多不足之处,如发送信息的长度受到限制,不能满足用户更多字数的聊天需求,这个问题,将是我今后调整和修改设计的方向。在这次的课程设计中,我充分体会到团队合作的重要性。六源代码Udpclient 用户端 登陆:Form1Designer:namespace UDPSever partial class Form1 / <summary> / 必需的设计器变量。 /
13、</summary> private System.ComponentModel.IContainer components = null; / <summary> / 清理所有正在使用的资源。 / </summary> / <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param> protected override void Dispose(bool disposing) if (disposing && (components !=
14、 null) components.Dispose(); base.Dispose(disposing); #region Windows 窗体设计器生成的代码 / <summary> / 设计器支持所需的方法 - 不要 / 使用代码编辑器修改此方法的内容。 / </summary> private void InitializeComponent() this.serverInformation = new System.Windows.Forms.ListBox(); this.message = new System.Windows.Forms.ListBox()
15、; 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.Formatting
16、Enabled = 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.Drawi
17、ng.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.P
18、oint(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); / / cl
19、ientsList / 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.Drawi
20、ng.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.Fore
21、Color = 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 =
22、 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)
23、; 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.FromAr
24、gb(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 = &qu
25、ot;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_Cl
26、ick); / / 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.btnSaveMesssag
27、e); 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 = "服务器" thi
28、s.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 me
29、ssage; 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
30、.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(); us
31、er.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;usi
32、ng System.Collections.Generic;using System.Linq;using System.Windows.Forms;namespace udpClients static class Program / <summary> / 应用程序的主入口点。 / </summary> STAThread static void Main() Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(
33、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.De
34、signer:namespace udpClients partial class Form2 / <summary> / Required designer variable. / </summary> private System.ComponentModel.IContainer components = null;/ <summary> / Clean up any resources being used. / </summary> / <param name="disposing">true if ma
35、naged resources should be disposed; otherwise, false.</param> protected override void Dispose(bool disposing) if (disposing && (components != null) components.Dispose(); base.Dispose(disposing); #region Windows Form Designer generated code / <summary> / Required method for Design
36、er support - do not modify / the contents of this method with the code editor. / </summary> private void InitializeComponent() System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form2); this.btnSend = new System.Windows.Forms.Bu
37、tton(); 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 / t
38、his.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.UseV
39、isualStyleBackColor = 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,
40、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.Nam
41、e = "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
42、.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.Mar
43、gin = 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.Auto
44、Size = 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)
45、; 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
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业电子买卖合同样本
- 农村集体场地租赁合同样本
- 农村房屋赠送合同标准文本
- 供热 bot 合同样本
- 团队创意思维的激发计划
- 公司办公维修合同样本
- 关于学校保洁合同范例
- 公司购买设备合同样本
- 中介公司用人合同样本
- 中央空调工程合同样本
- 人教版七年级数学下册《二元一次方程组》优质课说课课件
- 学校学生特异体质调查表
- 食用菌资源的开发及利用
- 二年级下册科学课件 11 不断发展的人工产品 人教版(26张PPT)
- 三.国际法习题之经典案例分析
- vmvare虚拟化平台巡检细则和方法
- 个人求职简历两页 (46)应聘履历参考模板可编辑修改
- 水下混凝土浇筑导管水密试验
- 非连续性文本阅读训练(六年级语文复习)
- 市政工程监理规划范本(完整版)
- 剪刀式升降机
评论
0/150
提交评论