linux网络编程——聊天室总结

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情
说在前面

暑假留校的主要任务是学习linux下的c语言编程,之前写了my_ls, my_shell这两个可以说是练手的小项目,而最后的项目聊天室也是花了自己快两周的时间,说实话第一次写这种(对自己而言)大项目,最深刻的体会就是整体的架构很重要,很重要,很重要…

项目概述

Linux 环境下的简易聊天室,采用C/S模型,实现多客户端之间的稳定数据传输。

功能
  1. 登陆注册账号,登陆时密码不会显
  2. 好友管理
    a. 查看好友列表(不同颜色代表不同的状态)
    b. 添加好友
    c. 删除好友
    d. 屏蔽好友
  3. 群管理
    a. 查看所加群,查看群中成员
    b. 创建群
    c. 加群
    d. 退群
    e. 解散群
    f. 设置管理员
    g. 踢人
  4. 聊天通讯
    a. 私聊
    b. 群聊
    c. 查看聊天记录
  5. 离线传输
    a. 离线消息
    b. 离线文件
  6. 传送文件
  7. 容错处理
  8. 对服务器要求
    a. 面对同时大量的客户端发送连接与数据时,服务器能正常处理
    b. 客户端的意外退出,不会导致服务器退出
    c. 数据能够正确接收和发送
相关技术
  1. socket编程(基础)
  2. MySQL数据库
  3. I/O多路复用(epoll)
  4. 线程池
功能截图

在这里插入图片描述在这里插入图片描述在这里插入图片描述

思路

服务端:
1. 创建套接字,绑定数据库,创建epoll句柄,通过while循环检测是否有请求到来,有请求到来时向线程池中添加任务
2. 创建3个链表,分别是储存用户信息,关系,以及聊天记录
3. ctrl + c 退出,销毁线程池,销毁链表,关闭套接字,关闭epoll描述符,释放资源

客户端:创建套接字,登陆成功后开启接收线程
注:客户端收发数据一定要分开写

完整代码

chatroom

基于LINUX QT5的局域网通讯聊天系统设计与实现 2.1 QT开发环境概述2.1.1 QT特点1.可移植性QT是跨平台的C++应用程序框架,它既可以在LINUX上使用开发,也可以满足WINDOWS上开发的需求,增强代码的可移植性。2.国际化国际化指的是一种地区语言开发的项目软件能够简便的给其他地区使用,而QT是支持代码本地化的,用户所编写的UI界面的文本是可以通过翻译表来转化为本地文本语言。Qt有着强大的linguist界面工具,它可以很方便的让开发代码翻译为本地语言,这个工具实现了软件的国际化。3.面向对象。 阅读详情

相关推荐

Linux网络编程小型聊天室

前段时间学习了网络编程,虽然没有完全熟练掌握,自己尝试做一个小型的聊天室 代码如下 - 客户端 chatclient.c #include <stdio.h> #include <pthread.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h&g...

weixin_44042590的博客 713

linux系统下实现聊天室

linux系统下实现聊天室 (1)在Linux系统下,使用TCP协议套接字编程; (2)服务器应具有处理多个客户端连接能力(设定最大连接数,如5个); (3)具有群发和私聊的能力; (4)过程描述

多人聊天室(带私聊功能)Linux网络编程基础

Linux网络编程是我们这学期学习嵌入式的重要内容:不仅仅是期末作业,更是对linux网络编程的巩固。接下来我会将全部内容分享出来哈哈ψ(`∇´)ψ提示:完成得比较随意,不够严谨,仅供参考,大家都能做得更好!太好咯,又做完一个作业 哈哈哈O(∩_∩)O。

qq_59147881的博客 8214

linux下自创网络编程聊天室(3)

总体设计 本聊天室系统采用了c/s形式。服务器主要是处理客户输入信息。首先要存储客户的个人资料,相当于注册。再有,在客户的聊天信息时,也要记录下客户的聊天记录,已备查看聊天记录所用。当然,服务器还有自己的动态数据处理。客户状态分为链接客户和非连接客户,我采用结构体存储链接客户信息,以链表来记录链接客户。而链接客户又分为登陆客户和未登陆客户,这就通过修改链表上客户的名字。当客户一链接客户服务端

h674174380的博客 4834

linux在线聊天报告,linux聊天室报告.doc

您所在位置:网站首页 > 海量文档&nbsp>&nbsp计算机&nbsp>&nbsplinux/Unix相关linux聊天室报告.doc19页本文档一共被下载:次,您可全文免费在线阅读后下载本文档。 下载提示1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。2.该文档所得收...

weixin_39633774的博客 296

Linux 小实验之我的局域网聊天室

Linux 小实验之我的聊天室         现在学了linux网络编程,就想着做一个局域网聊天的小实验,虽然实验不难,但是个人感觉写代码这件事情非常好玩,做出一点好玩的东西与别人分享是一件很有意义的事,分享才会快乐。        不多说先来看看效果,自己想想这是如何实现的。 用户上线系统会统计在线人数个名字 其他客户端上线,自己也可以看到,模仿飞秋哦

u011597116的专栏 1876

实现Linux 聊天室(高性能服务器设计基础)

本文介绍了基于Linux的TCP聊天室服务器设计,采用C/S架构实现客户端与服务端通信。通过流程图展示了TCP/UDP协议的工作流程,并封装了关键网络函数(tcp_init/tcp_accept/tcp_connect)。1.0版本实现了基础连接功能:客户端发送消息后接收服务端响应,但功能较简单。后续可扩展为多客户端连接、持续交互的完整聊天室系统。代码使用C语言编写,包含错误处理机制,适合学习Linux网络编程基础。

weixin_52400878的博客 2040

linux下自创网络编程聊天室(1)

在线聊天室 在线聊天室,通过网络建立的虚拟聊天室,分为文字聊天室,视频聊天室。 网络聊天室是在一个网站中,供许多人通过文字与符号进行实时(您输入的内容马上就能被别人看见)交谈、聊天的场所,它是一个向整个因特网开放的地方。 E时代 “E时代”的到来,给人们提供了各种便利。然而,其中受非议最多、名声最差的莫过于网络聊天了。人们从新闻媒体中听说的、与网络聊天有关的事件,十有八九与诈骗、抢劫、杀人等社

h674174380的博客 2414

Linux网络编程:简易聊天室

简介 这个是我利用当前掌握的知识写的一个小的项目,主要功能就是建立一个服务器,然后让加入该服务器的客户端能跟使用QQ群一样聊天。 使用方法 下载源码 修改server.h中的SERVERPORT,表示服务器要使用的端口,建议使用大于1024的端口。 修改client.c中的SERVERPORT和SERVERIP,对应于服务器的端口和IP 在项目文件夹下运行make指令,可以生成client和se...

丶未云何龙 1193

网络编程项目linux下基于C/S架构的聊天室

一、项目要求: 1. 采用 Client/Server 架构  2. Client A 登陆聊天服务器前,需要注册自己的 ID 和密码  3. 注册成功后,Client A 就可以通过自己的 ID 和密码登陆聊天服务器  4. 多个 Client X 可以同时登陆聊天服务器之后,与其他用户进行通讯聊天  5. Client A 成功登陆后可以查看当前聊天室内其他在线用户 Client x

baymin_dly的博客 5104

Linux C网络编程实战:搭建跨平台聊天室

Linux系统调用作为操作系统提供给用户空间程序的接口,是我们进行网络编程不可或缺的一部分。系统调用可以被视为从用户空间到内核空间进行请求的桥梁。

weixin_36474001的博客 491

linux下自创网络编程聊天室(2)

总体设计 本聊天室系统采用了c/s形式。服务器主要是处理客户输入信息。首先要存储客户的个人资料,相当于注册。再有,在客户的聊天信息时,也要记录下客户的聊天记录,已备查看聊天记录所用。当然,服务器还有自己的动态数据处理。客户状态分为链接客户和非连接客户,我采用结构体存储链接客户信息,以链表来记录链接客户。而链接客户又分为登陆客户和未登陆客户,这就通过修改链表上客户的名字。当客户一链接客户服务端时,

h674174380的博客 8913

Linux C 网络编程——多线程的聊天室实现(客户端)

客户端的主要功能:         建立与服务器端的连接,发送消息接收消息 客户端的代码结构:         总共有两个函数:一个主函数(main),实现客户端套接字的初始化,与服务器建立连接,并且接收消息再本地显示;一个发送函数(snd),从控制台读入信息然后发送到服务器。 这两个函数分别在两个线程上运行,一个是主函数所在的线程,另一个是在主函数里创建的发送函数所在的线程。 具

SmarterYu的专栏 6291

嵌入式linux项目介绍与分享-基于 Linux 下 Socket 网络编程的局域网聊天室

项目是基于 Linux 下 Socket 网络编程的局域网聊天室,实现了账号注册与登录、私聊消息、群发消息、发送离线消息、查看聊天记录、修改昵称密码等功能,并设置管 理员,实现将用户禁言、解禁、踢出聊天室等,采用多线程并发服务器模型处理多个客户端的同时连接和请求,服务器创建并管理用户数据、在线用户数据、聊天数据、离线消息数据等 SQlite 数据库,并提供后台服务,客户端通过 TCP 协议建立与服务器的稳定连接,并通过格式化输入输出实现与用户的交互。

szq0909的博客 3599

学习Linux网络编程实现小项目-聊天室(2)--客户端代码

封装过的出错函数可以去服务端代码里找 以下是代码实现 client.h #include <stdio.h> #include <stdlib.h> #include <string.h> #include <fcntl.h> #include <errno.h> #include <pthread.h> #include <unistd.h> #include <sys/socket.h> #include &

weixin_45819130的博客 681

学习Linux网络编程实现小项目-聊天室(1)--服务端代码

注意epoll的性能提升,暂时我的理解比较浅 其实服务端的数据存储并不只限于mysql 可以是数组+mysql 可以是链表+mysql 可以是数组+链表+mysql 可以是线程池+mysql 可以是很多很多。。。。 用的是看个人能力,但如果基础不行,重构的几率就变的非常大 代码实现 内核链表 List.h #include <stdlib.h> #include <assert.h> /*初始化链表list。链表为带头结点的双向循环链表*/ #define List_Init(li

weixin_45819130的博客 1168

Linux网络编程】基于UDP实现多人聊天室

基于UDP实现的多人聊天室,内附详细的服务器和客户端的思路步骤和代码实现。以及个个模块的实现。最后附上源代码给大家借鉴参考,希望对大家有所帮助。 代码中可能有许多不规范的地方,逻辑可能并不严谨,还请各位大佬不吝赐教。 整体项目并不复杂,只需要想清楚service和client分别需要做什么事。画好流程图,就会很清晰的将思路缕顺。从而只需要模块化的完成相应代码即可。

m0_65835264的博客 4215

Linux c网络编程聊天室项目

涉及内容 C/s框架,多线程,进程,TCP/UDP双协议,c库文件,sqlite3,线程池,码量6000+ 主要实现功能:注册,登录,忘记、修改、查找密码,信息群私收发,文件群私收发,常用语问候语群私收发,实时查看在线用户等等。 要实现这些功能,一定要弄清自己的思路,登录前后登录后用户的功能的实现。 我就直接上代码了: 服务器(部分代码): 客户端(全部代码) /**********************************************************************

m0_60375038的博客 2239

linux下自创网络编程聊天室(4)改进两点

总体设计 本聊天室系统采用了c/s形式。服务器主要是处理客户输入信息。首先要存储客户的个人资料,相当于注册。再有,在客户的聊天信息时,也要记录下客户的聊天记录,已备查看聊天记录所用。当然,服务器还有自己的动态数据处理。客户状态分为链接客户和非连接客户,我采用结构体存储链接客户信息,以链表来记录链接客户。而链接客户又分为登陆客户和未登陆客户,这就通过修改链表上客户的名字。当客户一链接客户服务端

h674174380的博客 2601
上一篇: 线程实例(生产者消费者+哲学家问题+简易线程池)
下一篇: 大一暑假留校总结
指关节
博客等级 码龄8年 73粉丝 26原创
评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值