项目简介
本项目聚焦于个人在Linux系统编程方面的学习实践,涵盖命令行参数处理、文件与目录操作、进程与线程管理、网络编程等多方面代码与小功能。同时,实现了一个基于C语言的网络聊天室系统,包含客户端与服务器两部分。服务器借助多线程和epoll达成多用户并发连接与消息传输,客户端通过TCP协议与服务器通信,可实现连接、发送和接收消息。
项目的主要特性和功能
通用功能
- 设有通用目录
common
,其中包含系统编程头文件、线程池、reactor反应堆、通用功能函数等。
各模块功能
- 命令行参数:可处理命令行参数。
- 文件与目录:实现文件与目录相关操作。
- 实现基于Linux下的ls功能:具备类似
ls -al
的功能。 - 进程间通信的方式:实现多种进程间通信。
- 进程:实现进程相关操作。
- 线程:实现线程相关操作。
- 网络编程之进程:开展基于进程的网络编程。
- 网络编程之线程:开展基于线程的网络编程。
- I/O多路复用之select:实现I/O多路复用的select方法。
- 文件传输:实现文件传输功能。
- 粘包问题:解决C/S文件传输的粘包问题。
- reactor反应堆:实现reactor反应堆功能。
- poll之简易聊天室:客户端用poll同时监听用户输入和网络连接,服务端接收客户数据并广播给所有在线客户端。
网络聊天室功能
客户端功能
- 连接指定的服务器IP和端口。
- 发送和接收消息。
- 支持从标准输入读取消息并发送到服务器。
- 显示服务器的响应消息。
服务器功能
- 监听指定端口,接受客户端连接。
- 管理在线用户,支持最大用户连接数限制。
- 处理客户端连接请求,为每个连接创建新线程处理。
- 处理客户端发送的消息,并将其广播给所有在线用户。
- 支持多线程并发处理,使用epoll进行事件监听。
安装使用步骤
- 确保已下载本项目的源码文件。
- 编译客户端和服务器代码。
- 运行服务器程序,指定监听端口。
- 运行客户端程序,指定服务器IP和端口。
- 在客户端输入消息,服务器将消息广播给所有在线用户。
注意事项
- 客户端和服务器需在同一局域网内,或者服务器有公网IP地址。
- 客户端和服务器需使用相同的协议和端口号。
- 客户端和服务器需正确配置防火墙以允许TCP连接。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】