在上期的socket套接字的使用详解中(socket套接字的使用详解)最后实现的TCP服务器只能处理一个客户端的请求发送,当有其他客户端请求连接时会被阻塞。为了能同时处理多个客户端的连接请求,本期使用多线程的方式来解决。
程序流程
- 创建监听套接字:使用
socket
函数创建套接字lfd
。 - 绑定套接字:使用
bind
函数将套接字绑定到指定的 IP 地址和端口。 - 监听连接请求:使用
listen
函数开始监听连接请求。 - 等待并接受客户端连接:使用
accept
函数等待并接受客户端连接请求。 - 获取客户端地址信息:使用
getpeername
函数获取已连接客户端的 IP 地址和端口号。 - 创建线程处理客户端请求:使用
pthread_create
函数创建新线程处理该连接,并设置线程为分离属性。 - 线程处理客户端通信:在
handle_client
函数中处理与客户端的通信,包括读取请求、处理数据、发送响应。 - 主线程继续监听新的连接请求:主线程关闭新的客户端套接字,由新线程处理