多线程服务器是对多进程服务器的改进,由于多进程服务器在创建进程时要消耗较大的系统资源,所以用线程来取代。
多线程并发TCP服务器可以同时处理多个客户端请求,并发服务器常见的设计是“一个请求一个线程”:针对每个客户端的请求,主线程都会创建一个工作者线程,由工作者线程来负责和客户端进行通信。
服务端代码:threadTcpSer.cpp
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<string.h>
#include<unistd.h>
#include<errno.h>
#include<pthread.h>
#include<iostream>
#include<cstring>
#include<stdio.h>
#include<stdlib.h>
using namespace std;
void*client_process(void*arg);//线程函数,处理客户端信息,函数参数是已连接的套接字
int main(int argc,char * argv[]){
int newFd;
pthread_t thread_id;
//创建套接字
int sockFd=socket(AF_INET,SOCK_STREAM,0);
if(sockFd<0){
puts("Create socket failed!");
return -1;
}
//设置地址IP和端口
sockaddr_in