1、 通信工程学院 题 目 网络聊天室的设计 课 程 名 称 通信应用软件课程设计 专 业 多媒体通信 班 级 媒通 111 目录 1.概述. 错误错误! !未定义书签。未定义书签。 .设计介绍. 5 2.1 功能描述 5 2.2 流程图 6 3.程序实现(关键代码解释). 10 4.功能演示(说明). 13 5.总结与展望. 14 1.1.概述概述 1.11.1 系统概述系统概述 Linux 是一种针对 PC 计算机和工作站得操作系统。 他具有像 Windows 和 Mac 那样的功能齐全的图形用户界面。由于 Linux 的开源的特点,越来越多的人转而 使用 Linux 作为 PC 机得操作系统
2、。 Linux 系统支持三种并发方式:多进程、多线程、以及 I/O 多路复用。而多 线程技术是并行技术中开销较小,效率较高的一种方式,与其他两种方式相比, 线程占用更少的系统资源,而且效率更高,是并发技术中最常用的方式。 网络聊天程序是目前应用极为广泛的一种网络软件, 对于方便人们的交流沟 通非常有效,同时,作为一种典型的网络应用,编写网络聊天程序是学习基于 Linux 的网络编程的有效方法。 服务器端:循环等候客户连接请求,一旦有客户连接请求,开启一个子线程 接受并处理客户请求,接受来自客户的信息。然后将客户信息反转后再返回给客 户端。主线程继续等待其他客户请求。服务器具有同时处理多个用户的
3、能力。 客户端:首先与服务器建立连接,然后向服务器发送数据进行交互,接受服 务器的反馈信息并显示, 之后继续等待用户输入直至用户输入 ctrl+D 结束通信。 客户端接到输入 ctrl+D 后,客户端关闭连接并退出。 本次课题设计是在使用 Linux 线程和 Socket 接口的基础上,编写网络聊天 程序,从而掌握 Linux 应用程序开发的基本方法,练习 Linux 线程及 Socket 编 程的方法,从而将所学知识融会贯通。 1.21.2 课程设计目的课程设计目的 通信应用软件课程设计是实践性教学环节之一。通过课程设计,使学生掌握 套接字的基本概念,结合实际的操作和设计,巩固课堂教学内容。
4、学生在掌握 TCP/IP 协议及 Socket 编程原理和技术的基础上,将理论与实际相结合,应用现 有的程序开发工具,规范、科学地完成一个接近实际的应用程序,把理论课与实 验课所学内容做一个综合,并在此基础上强化学生的实践意识、提高其实际动手 能力和创新能力。 1.31.3 课程设计要求课程设计要求 综合运用本课程及计算机网络的相关知识设计并实现一个网络应用程序或 对某一计算机网络运行机制进行程序分析。安排 1 周的时间进行课程设计,一般 1 人为一组。如果涉及到应用程序的开发,可扩充到 24 人一组,采用自由分 组、推选组长的形式,由课代表将分组情况报到教师处。 要求如下: (1) 充分认识
5、课程设计对培养自己动手能力的重要性,认真做好设计前的各 项准备工作; (2) 充分发挥主观能动性,结合课题,独立思考,努力钻研,勤于实践,勇 于创新; (3) 按时完成规定的工作任务,不得弄虚作假,不准抄袭他人内容,否则成 绩以不及格计; (4) 课程设计期间,无故缺席按旷课处理; (5) 在设计过程中,要严格要求自己,树立严肃、严密、严谨的科学态度, 必须按时、按质、按量完成课程设计。 (6) 小组成员之间,分工明确,但要保持联系畅通,密切合作,培养良好的 互相帮助和团队协作精神。 1.41.4 课程设计内容课程设计内容 网络聊天室设计: 采用客户/服务器模式,分为客户端程序和服务器端程序。
6、服务器采用 I/O 模 型中的任一种,支持多个客户同时在线聊天。客户端程序和服务器程序通过网络 交换聊天字符串内容,服务器窗口的列表框中显示当前在线用户,支持客户端之 间的私聊(可以通过服务器中转,或考虑 UDP 直接建立端端连接) 。 2.设计介绍设计介绍 2.12.1 功能描述功能描述 2 2. .1 1.1 .1 转发信息模块转发信息模块 服务器定义 readMessage 函数用于存储要求请求连接的用户名, 客户发送 的信息,该消息服务器、客户端共享,客户端读取该信息,从而实现信息转发。 2 2. .1 1.2 .2 用户登录模块用户登录模块 用户输入用户名、服务器 ip 地址及密码,如果通过合法性检测,则可进 入聊天主界面与其他人进行聊天。 2 2. .1 1.3 .3 群聊模块群聊模块 客户端点击“发送信息”按钮,该客户端的 ip 地址、端口号以及信息内容 一起打包写入服务器 readMessage 函数,客户端通过线程可以读取该客户 write 中的内容。 2.22.2 流程图