C课程设计基于Socket的聊天室程序

上传人:s9****2 文档编号:513782938 上传时间:2022-11-27 格式:DOC 页数:22 大小:304.50KB
返回 下载 相关 举报
C课程设计基于Socket的聊天室程序_第1页
第1页 / 共22页
C课程设计基于Socket的聊天室程序_第2页
第2页 / 共22页
C课程设计基于Socket的聊天室程序_第3页
第3页 / 共22页
C课程设计基于Socket的聊天室程序_第4页
第4页 / 共22页
C课程设计基于Socket的聊天室程序_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《C课程设计基于Socket的聊天室程序》由会员分享,可在线阅读,更多相关《C课程设计基于Socket的聊天室程序(22页珍藏版)》请在金锄头文库上搜索。

1、课 程 设 计 报 告 课程名称:面向对象程序设计 设计题目:基于Socket的聊天室程序 专 业:计算机科学与技术 姓 名: 学 号: 指导教师:李 晓 虹2016 年 1 月 6 日目录1. 系统需求分析32. 总体设计32.1. 服务器端功能32.2. 客户端功能33. 详细设计43.1. 服务端实现43.1.1. 服务端布局53.1.2. 函数设计步骤63.2. 客户端实现73.2.1. 客户端布局83.2.2. 设计步骤94. 系统调试115. 结果分析146. 总结147. 附件:程序源码167.1. 服务端167.2. 客户端191. 系统需求分析当前是数字信息时代,网络时代,任

2、何一种编辑工具都不能忽视在网络上的应用,并且随着Internet的普及和宽带技术的成熟,越来越多的用户进入网络世界中享用浏览新闻、查询信息、发送邮件、在线观看电影等服务,享受网络带来的便利和办公的高效,与此同时一个新型的Web应用程序为网民之间提供了一个实时通信的功能和场所,这就是聊天室。在网络早期就开始盛行,不论是BBS,IRC都有类似网上聊天室的机制。聊天室为网友提供了实时性对话的渠道,是网络上极为流行的一项服务。聊天室适用于网上会议或闲聊的一些场合。聊天室为网友提供了较好的交友环境,网友之间相互以文字交谈,在形式上有点类似笔友的性质,却大大节省了书信往返的时间,这也是网上交友之所以如此热

3、门的原因。2. 总体设计本课题是建立聊天通信模型,设计一个聊天室软件,包括服务器端和客户端主要功能为:2.1. 服务器端功能l 初始化socket,创建服务器端。l 维护一个链表,保存所有用户的IP地址、端口信息。l 接受用户传送来的聊天信息,并显示。l 接受用户传送来的连接判断命令,并向用户发出响应命令。2.2. 客户端功能客户端界面上的两个文本框,一个用于显示接受的聊天信息,一个用来接受用户输入的聊天信息。当按下“发送”按钮时将信息发送给服务器。通过本课题,可以比较深入的了解和掌握Socket类基本属性、方法和事件,理解网络聊天通信的概念,输控制协议(TCP)进行数据交流,初步掌握网络聊天

4、通信程序的设计方法。并能巩固和扩展大学期间的学习内容,进行项目的设计开发训练,更好的适应社会的需求。3. 详细设计3.1. 服务端实现首先启动vs 2015,建立一个新的Windows 窗体应用程序工程,工程名为Socket_Server,按需要进行界面布局如图(3-1):(3-1)3.1.1. 服务端布局分三个区域:第一个是连接区域,需要输入本机的IP地址和监听的端口号相关设置信息;第二个是聊天信息显示区域,该窗口显示服务端开启监听以来发送和接收到的消息以及当前连接当服务器的客户端;第三个是消息编辑发送区域,需要输入你要发送的信息内容并发送。(单击启动服务按钮时的处理网络监听的函数。)代码设

5、置如下:private void btnStart_Click(object sender, EventArgs e) try if (btnStart.Text = 启动服务) SerSck = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); SerSck.Bind(new IPEndPoint(IPAddress.Parse(txtIP.Text), int.Parse(txtProt.Text); SerSck.Listen(1000); whileEnabled = true; S

6、erTh = new Thread(Accept); SerTh.IsBackground = true; SerTh.Start(); AddMsg(服务启动成功!); btnStart.Text = 停止服务; else if (MessageBox.Show(是否要停止服务?, 提示:, MessageBoxButtons.OKCancel) = DialogResult.OK) whileEnabled = false; if (SerTh.IsAlive) SerSck.Close(); SerTh.Abort(); AddMsg(停止服务! ); btnStart.Text = 启

7、动服务; DicCliSck.Clear(); lstCli.Items.Clear(); catch (Exception ex) AddMsg(ex.Message); DicCliSck.Clear(); lstCli.Items.Clear(); 3.1.2. 函数设计步骤相关文本框txtIP.Text(保存IP),txtProt.Text(保存端口)创建套接字SerSck ,通过ip和端口进行初始化并开启监听服务开启成功后将成功信息打印在消息框中。(单击发送按钮时的消息发送函数。)代码设置如下: private void btnSend_Click(object sender, Ev

8、entArgs e) if (lstCli.SelectedItem = null) MessageBox.Show(请选择已连接的客户端!); else if (DicCliScklstCli.SelectedItem + != null) DicCliScklstCli.SelectedItem + .Send(Encoding.UTF8.GetBytes(txtSendMsg.Text); AddMsg(DicCliScklstCli.SelectedItem + .LocalEndPoint.ToString() + : + txtSendMsg.Text); txtSendMsg.T

9、ext = ; else MessageBox.Show(该客户端已失联!); lstCli.Items.Remove(lstCli.SelectedItem); 通过当前已激活的套接字将文本框txtSendMsg.Text中的信息发送出去。要显示客户端接收到来自服务器其他用户的信息,代码设置如下:private void CliReceive(object obj) Socket CliSck = (Socket)obj; byte bts = new byte1024 * 1024; try while (whileEnabled) int length = CliSck.Receive(

10、bts); if (length = 0) AddMsg(CliSck.RemoteEndPoint.ToString() + :断开连接); DicCliSck.Remove(CliSck.RemoteEndPoint.ToString(); lstCli.Items.Remove(CliSck.RemoteEndPoint.ToString(); return; AddMsg(CliSck.RemoteEndPoint.ToString() + : + Encoding.UTF8.GetString(bts, 0, length); catch (Exception ex) AddMsg(CliSck.RemoteEndPoint.ToString() + : + ex.Message); DicCliSck.Remove(CliSck.RemoteEndPoint.ToString(); lstCli.Items.Remove(C

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号