
前言
聊天工具和我们的日常生活越来越密不可分,看着 腾讯大佬的两款工具 QQ,We Chat 独步江湖, 小马哥 天天在家无聊的数钱玩
小六前几天在某个地方采药,不小心掉入了一个山洞中,昏迷后醒来 发现石壁上刻着九阳神功 其中有一章专门讲如何制作聊天工具的
C/S模式
C-S 模式 Client-Server 模式 也叫 客户端-服务器模式
客户端和服务器之间约定好各种协议,客户端输入指令 服务器返回计算结果

TCP/UDP 协议
OS

- OS 上一切皆文件 无论从硬盘还是从网络上写入读取 OS都将给他一个文件描述符
- 文件描述符由内核统一管理 读取写入信息必须经过内核 因此空间需要有一块能够存放信息的空间
- 信息最终要交给应用程序 因此内核进程 和 用户进程之间还存在一次IO
- 至此将网络信息存放到了用户的用户进程空间,用户可以使用
基础介绍完毕,如何搭建自己的聊天的工具
聊天工具
经过前面的介绍 目前客户端和服务器之间呈现如图所示的一种情况
而两个客户端是无法直接通信的 客户端不在公网上
但是 服务器在公网上 IP PORT 都是固定的 客户端上的应用可以在任何地方链接到服务器 给服务器发送信息

基于上面客户端可以随时链接到服务器(C/S结构)
服务器上有和各个客户端连接的文件描述符(OS->fd)
因此客户端选择服务器上的其他fd 并发送信息给服务器
服务器接收到信息后根据客户端选择的 fd 将信息转发到对应的客户端 完成了用户A 和用户B 之间的通信

过往文章
自己动手写聊天工具
群组聊天
Q: 如何实现群组聊天
A: 无非多选择几个fd