300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 项目:聊天室思路(linux下实现 语言:C/C++)

项目:聊天室思路(linux下实现 语言:C/C++)

时间:2020-12-17 02:40:04

相关推荐

项目:聊天室思路(linux下实现 语言:C/C++)

先来沾上我的源码:/zhangyi-13572252156/ChatRoom.git

聊天室项目

我从以下几个点来介绍

项目原理

项目主要分为两端,客户端和服务端。

从上图我们可以看出,这表示的是刚开始的客户端的注册和登录状态。上图已经很清楚的显示出来了。

那么我们从上图再来看,采用多线程,服务端我们有登录和注册这条主线程,还有从数据库中拿数据的一条线程,还有一条往数据库中放数据的一条线程。那么这两条线程势必会遇到对同一数据块的操作,因此我们采用生产者-消费者模型。使两条线程可以正常的运作。

项目实现功能

实现了基本的群聊功能,显示发送人、时间、内容等消息实现了基本的私聊功能,双方在聊天室外单独通信实现了管理员权限,管理员可以对聊天室成员禁言、踢人、设置管理员等实现了找回账号找回密码,通过验证注册时的个人设置的密保问题和答案实现了保存聊天室中的聊天记录以及保存服务器的日志实现了双方发送和接收文件操作

感受

写一个项目前,一定要有一个框架,把自己的思路架构出来。要有一个大的思维导图,这样自己在做每一步的时候很清楚的知道自己在干什么。前期的时候犯得一个最大的错误就是没有整体的意识,写到那就是那,全凭脑子想。做了两天后,发现当初的规划不好,于是重新规划。在A3纸上画一个大图,告诉自己需要做哪些工作。以及服务端和客户端要干的事情。再往后写,就简单了很多。由于前期的架构做的比较好,到后期,项目越写越简单。加功能等等都是特别容易的事情。主要前期有一个规划和一个整齐的框架。不要先着急写代码。代码写起来特别简单。关于技术方面的问题,那些都不是什么难事情。遇到问题网上的资料很多,也可以问身边的技术大牛。虽然过程中也遇到很多问题。还是举一个简单的技术方面的问题吧。在创建线程的回调函数中,当初学习的时候,仿照书上的写法。直接将void*强转为int型。但是这次不行,编译器老是报错。后来我用了reinterpret(),还是不行。经过在网上查资料,突然意识到应该是64位机器和32位的机器的原因。64位机器上指针是8字节,而int类型是4字节,将一个8字节的转换成4字节的,会造成大量的精度缺失。因此我就new了一段新空间,用来存放其数据,传的是指针,但是我通过指针可以拿到4字节的数据。巧妙的解决了这个问题。当然还遇到很多很多技术方面的问题,到最后都能够解决。不过项目也存在了缺陷。比如在管理员权限这块。我定义刚开始的时候可以设置群主,以便进行管理员操作,群主可以设置群中的管理员,但是后来测试却发现,这个管理员也可以取消群主的权限,那么这个群主和管理员的地位明显是一样的,怪我当初设计的时候没有考虑到这一点。当然了,比起人家腾讯的QQ所实现的功能,我的还差远了,不仅仅是差远了,应该是地球到太阳的距离。。。。一个项目可以让我对于所学的知识有更加深刻的认识和了解。也将自己所学的线程的相关知识、生产者-消费者模型、数据库、文件I/O等等好多知识拼接在一起。因此这个项目让我收获很多。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。