一、C语言利用epoll实现聊天室。(CS架构)
①:CS架构:客户端-服务器架构、大多是本地软件。
BS架构:浏览器-服务器架构,大多数网站。
②:所运用技术:
epoll 机制实现并发
fork 创建进程
进程间通信(管道)
运用TCP(socket)实现客户端与服务端的通信 :Socket是应用层各个用户进程与运输层TCP/IP协议族通信的中间软件抽象层,它是一组接口。它把复杂的TCP/IP协议族隐藏在Socket接口后面 :
TCP 服务端通信的常规步骤:
- 使用
socket()
创建 TCP 套接字(socket) - 将创建的套接字绑定到一个本地地址和端口上(Bind)
- 将套接字设为监听模式,准备接收客户端请求(listen)
- 等待客户请求到来: 当请求到来后,接受连接请求,返回一个对应于此次连接的新的套接字(accept)
- 用 accept 返回的套接字和客户端进行通信(使用
write()
/send()
或send()
/recv()
) - 返回,等待另一个客户请求
- 关闭套接字
TCP 客户端通信的常规步骤:
- 创建套接字(socket)
- 使用
connect()
建立到达服务器的连接(connect) - 客户端进行通信(使用
write()
/send()
或send()
/recv()
) - 使用
close()
关闭客户连接
③:项目结构
一共有 3 个文件, 即: server.cpp
、client.cpp
、utility.h
server.cpp
是服务端程序client.cpp
是客户端程序utility.h
是一个头文件,包含服务端程序和客户端程序都会用到的一些头文件、变量声明、函数、宏等。