logo资料库

基于Linux操作系统C语言开发的多人聊天室程序设计与实现.docx

第1页 / 共17页
第2页 / 共17页
第3页 / 共17页
第4页 / 共17页
第5页 / 共17页
第6页 / 共17页
第7页 / 共17页
第8页 / 共17页
资料共17页,剩余部分请下载后查看
1 设计目的
2 开发环境
3 需求分析
4 概要设计
4.1设计思想
4.2服务器功能描述
4.3客户端的功能描述
5 总体设计
5.1系统功能流程图
5.2系统操作流程图
6 详细设计与实现
6.1 服务器进行编译执行
6.2客户端进行编译执行
6.3服务器进行注册,创建用户名和密码
6.4使用注册的账户和密码进行登录操作
6.5从客户端发送消息给服务端,服务端并成功接收
7 总结
8 参考文献
9 附录源代码
9.1客户端client.c源码
9.2服务端server.c源码
武 汉 华 夏 理 工 学 院 信 息 工 程 学 院 课程名称:Linux 网络编程 题 目: 基于 Linux 操作系统 C 语言开发 的多人聊天室程序设计与实现 专业班级: 计算机 1163 班 姓 学 名: 号: 程卓 10210416320 授课教师: 罗瑜 成 绩: 2019 年 5 月 31 日
目录 1 设计目的 .......................................................................................................................................................... 3 2 开发环境 .......................................................................................................................................................... 3 3 需求分析 .......................................................................................................................................................... 3 4 概要设计 .......................................................................................................................................................... 4 4.1 设计思想 ............................................................................................................................................... 4 4.2 服务器功能描述................................................................................................................................... 4 4.3 客户端的功能描述 ............................................................................................................................... 5 5 总体设计 .......................................................................................................................................................... 5 5.1 系统功能流程图................................................................................................................................... 5 5.2 系统操作流程图................................................................................................................................... 6 6 详细设计与实现.............................................................................................................................................. 7 6.1 服务器进行编译执行.......................................................................................................................... 7 6.2 客户端进行编译执行........................................................................................................................... 7 6.3 服务器进行注册,创建用户名和密码 ...............................................................................................8 6.4 使用注册的账户和密码进行登录操作 ...............................................................................................8 6.5 从客户端发送消息给服务端,服务端并成功接收...........................................................................8 7 总结 ...................................................................................................................................................................9 8 参考文献 .......................................................................................................................................................... 10 9 附录源代码 ...................................................................................................................................................... 10 9.1 客户端 client.c 源码 ......................................................................................................................... 10 9.2 服务端 server.c 源码 ......................................................................................................................... 13
1 设计目的 本课程设计主要实现一个 Linux 下的局域网聊天工具的设计。该设计主要分为两部分, 客户端部分和主机部分。运行服务器端程序可以和任意运行了客户端程序的主机进行通信, 通信内容能够通过终端显示出来。两个部分都使用 C 语言,利用 vi 编辑器,通过 Berkeley 套接口编程实现相关功能。 要求: (1)主要实现一个 Linux 下的局域网聊天工具的设计,进一步掌握 vi,gcc 等工具的 使用,并且熟悉 Linux 下的网络编程,以及多线程编程。 (2)通过实际项目的分析、安装、配置、测试等工作,掌握用 Linux 系统下的网络聊 天室的应用。 2 开发环境 硬件环境: Intel(r) Core(TM)i7-6700HQ @2.6Hz 8.0GB 64 位操作系统。 软件环境:window 10 ,虚拟机,Ubuntu 系统。 3 需求分析 根据网络应用程序的特点,网络在线聊天系统应就有即时,快速的特点。服务器端和客 户端应就有不同的功能特性。对于服务器端应能够正确地建立与客户端的连接并能正确地 断开,能即时地接收、处理和发送接收到的数据。能及时地通知在线用户当前好友在线状 况,能够处理非正常数据的能力。对于客户端应能够快速地检查是否能够连接到服务器端。 能正确的获得和反映当前好友在线情况。能够正确的与特定好友交流。能及时地接收到服 务器端地数据,并能即时处理数据,并能将处理结果反映给用户。 服务器端: 1.能够正确地、无冲突地启动服务器。 2.监听指定的端口,等待用户的连接。 3.建立与客户端的逻辑连接,并能通知其他好友。 4.向新进入的好友发出已上线的好友名单。 5.接收客户端的消息请求,并能正确无误地处理消息,并能发出消息到客户端。
6.反映当前在线人数和在线好友状况。 7.及时地反映发出地消息和聊天消息。 8.当好友断开与服务器端地连接时,服务器能够正确地断开连接,并通知其他用户。 9.当用户违反聊天系统规定时,服务器系统管理员能够断开与此用户的连接。 10.当服务器关闭时,应通知所有用户。 客户端: 1.能够正确启动应用程序,并能向服务器发出连接请求。 2.反映当前好友在线情况。 3.能够向群体或指定好友发出消息。 4.能够及时接收好友发出消息,并通知用户。 5.能够正确地断开与服务器端地的连接。 4 概要设计 4.1 设计思想 本聊天室系统采用了 c/s 形式。服务器主要是处理客户输入信息。首先要存储客户的个人资料,相 当于注册。再有,在客户的聊天信息时,也要记录下客户的聊天记录,已备查看聊天记录所用。当然, 服务器还有自己的动态数据处理。客户状态分为链接客户和非连接客户,我采用结构体存储链接客户信 息,以链表来记录链接客户。而链接客户又分为登陆客户和未登陆客户,这就通过修改链表上客户的名 字。当客户一链接客户服务端时,就给客户一个账号,也就是相当于注册信息,同时并发服务器一直在 为连接用户创建线程。 4.2 服务器功能描述 服务器主要是负责监听客户端发送来的消息,利用 TCP 线程并发服务器模型实现对客户端的监听接 收。 服务器程序的作用为:初始化服务器程序,持续监听一个固定的端口,收到客户的连接后建立一个 socket 连接,与客户进行通信和信息处理,接收客户通过 socket 连接发送来的数据,创建一个新的 socket;通过 socket 连接与客户通信,进行响应处理,并返回结果,通信结束后终端与客户的连接(关
闭 socket);主要的过程为服务器创建一个共享内存空间函数,以及客户端简单的界面,利用套接字模 型机制实现服务器简易模型的实现,利用 socket()创建流式套接字,并可以返回套接自号;利用 bind() 实现套接字与本地地址相连,listen()通知 TCP 服务器准备好监听客户端的连接,accept()接收连接, 等待客户端的连接,建立连接之后 accept 返回新的标识客户端的套接字,运用多线程以及 recv()/send() 接收发送数据; 4.3 客户端的功能描述 客户端主要用来向服务器端发送数据,客户端程序的作用:初始化客户程序,连接到某个服务器上, 建立 socket 连接,通过 socket 连接向服务器发送请求信息,通信结束后中断与客户的连接。主要的实 现步骤为:需要定义运行时候需要的参数,同样利用 socket()建立流式套接字,返回套接字号,connect() 将套接字与远程主机连接,recv()和 send()将套接字上的读写数据进行发送与接收,close()关闭套接 字,关闭对话。 5 总体设计 5.1 系统功能流程图 当客户端发送信息时,服务器将信息共享到其他用户端,与此同时当其他用户发送信息时服务器也 将信息发送到本地端,多人聊天室程序的系统功能流程图, 图 5.1 聊天室的功能流程图
5.2 系统操作流程图 首先运行服务器端程序,通过 Socket()函数会建立一个套接字,然后通过 Bind()函数绑 定一个端口,然后调用 Listen()在套接字指定的端口上开始倾听,利用 Accept()从完全建 立连接的队列中接受一个连接,连接获得后使用 Read()和 Write()函数进行通信。通信结束 后调用 Close()关闭套接字描述符。 运行客户端的程序,调用 Socket()函数建立一个套接字,使用 Connect()函数与服务器 端进行连接,连接完成后,使用 Write()和 Read()与服务器端进行通信,通信结束后调用 close()关闭套接字描述符。系统操作流程图如图 5.2 所示: 图 5.2 系统操作流程图
6 详细设计与实现 6.1 服务器进行编译执行 6.2 客户端进行编译执行
6.3 服务器进行注册,创建用户名和密码 6.4 使用注册的账户和密码进行登录操作 6.5 从客户端发送消息给服务端,服务端并成功接收
分享到:
收藏