目录
对于之前博客中的代码。当一个客户端和服务器建立连接以后,服务端accept()返回,然后准备循环接收客户端发送的数据。如果客户端暂时没有发送数据,服务端绘制recv()处阻塞住。此时如果其他客户端向服务端发起连接,就无法进行accept()。也就是说,服务器无法同时处理多个客户端。
为了解决这个问题,我们可以引入多线程和多进程。
服务器接收一个客户端的连接后,创建一个线程或者进程,然后在新创建的线程或进程中循环处理数据。主线程只负责监听客户端连接,使用accept()接收连接。
用多线程处理
思路:完成三次握手后,客户端进入线程,再连接服务器端,就可以实现并发;
或者在while()循环中使用线程进行accept()
服务端代码:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#in