一、功能介绍
这是基于Linux下命令行设计的一个简单的群聊天程序。
这个例子可以学习、巩固Linux下网络编程相关知识点
- 练习Linux下socket、TCP编程
- 练习Linux下pthread、线程编程
- 练习Linux下多路IO检测、select函数使用
- 练习C语言链表使用
- 练习线程间同步与互斥、互斥锁mutex的使用
群聊程序分为客户端和服务器两个程序
-
服务器端: 运行整个例子要先运行服务器, 服务器主要用于接收客户端的消息,再转发给其他在线的客户端。服务器里采用多线程的形式,每连接上一个客户端就创建一个子线程单独处理;用了一个全局链表存放已经连接上来的客户端,当一个客户端发来消息后,就逐个转发给其他客户端,客户端断开连接下线后,就删除对应的节点;链表添加节点、删除节点采用互斥锁保护。
-
客户端: 客户端相当于一个用户,客户端代码可以同时运行多个,连接到服务器之后,互相发送消息进行聊天。发送的消息采用一个结构体封装,里面包含了 用户名、状态、消息本身。
功能总结: 支持好友上线提醒、好友下线提醒、当前在线总人数提示、聊天消息文本转发。
好友上线通知、正常聊天效果:
好友下线提示: