• 首页
  • 搜索
  • 工具
  • 分类
  • 日志
  • 友链
  • 图片

It's Geek KingYoungy

KEEP CHALLENGE
C/C++Unix/Linux应用层程序设计

Local聊天室

2025-03-16 浏览量 117 暂无评论

本项目基于SYSTEM V消息队列、POSIX线程、ncurses库进行实现,能够创建多个聊天室,用户加入聊天室即可与同一聊天室的其他所有用户下聊天。类似于wx与qq的群聊功能。
使用图:屏幕截图 2025-03-16 181259.png
流程图:LOCAL聊天室_client.1.1.drawio.png LOCAL聊天室_server.1.1.drawio.png
开发日志:
教训(花了我近乎两个小时):
共享库命名一定要规范:.so.x.y.z
不然ld链接器找不到
AI的能力不足以找到错误。

2025 3.15 又一个教训
客户端,服务器头文件不统一。服务器改了头文件的部分内容,客户端没有及时修改
花了我又快两个小时。
解决方法:今后项目根目录新建include文件夹存放头文件

开发的时候,在关键的步骤一定要用printf打印状态/要干什么事/干完了什么事
不可自负,相信能一遍做完大项目
若在开发前期写好输出到日志文件的函数,将会事半功倍,不用在大功告成时注释掉或删除掉密密麻麻的printf了
但这样的坏处就是不能边运行边看。

2025 3.16 最后两个教训
收包输出但是得到乱码不是因为别的,就是发的缓冲区与收的缓冲区大小没设置好,以为发送端会发那么多没想到那个发送大小宏定义竟然是0,最后导致内存访问出界了

本来想搞一个无限循环了的,手贱在一个if语句的最后加了一个break,还在想服务器服务线程怎么莫名其妙不吭声了,操原来是break了。
还在想有什么逻辑错误,没想到是这种小错误。

CSYSTEM V消息队列POSIX线程ncurses库
深入理解pthread互斥量与条件变量的使用
System V 信号量与共享内存技术解析

评论

  • 文章目录
  • 站点概览
    author

    38 日志
    7 分类
    Creative Commons
    • 热门文章
    • 热评文章
    • 随机文章
    • 在 Debian 服务器上部署 FileBrowser 并集成到现有博客路径
    • 高等数学重要定义整理
    • 高等数学重要定理总结
    • C语言原子量的使用
    • 库、链接与执行
    • 欢迎使用 Typecho
    • 对底层IO的深度总结
    • 数据结构——树
    • 库、链接与执行
    • shell作业控制的两个问题:组长叛变与SIGHUP信号
    • UNIX 98伪终端核心系统调用及函数封装
    • Internet Domain Socket 编程:字节流与数据报套接字详解
    • C++ STL中的栈与队列:核心原理与实战应用指南
    • Linux信号处理深度解析:从基础到高级应用
    • 对底层IO的深度总结

    浏览量 : 5414

    © 2025 It's Geek KingYoungy. Power By Typecho . Theme by Shiyi

    浙ICP备2025160639号  |  浙公网安备33020502001222号

    This is just a placeholder img.