每连接一个客户端都创建一个子线程去处理信息,线程设置成分离态,线程结束系统自动回收资源。线程处理函数中不能使用exit函数 。运行程序。./可执行程序名 +IP地址+端口号。
server.c
#include <arpa/inet.h>
#include <netinet/in.h>
#include <netinet/ip.h>
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <unistd.h>
#define ERRLOG(ermsg) \
do { \
printf("%s %s %d:", __FILE__, __func__, __LINE__); \
perror(ermsg); \
exit(-1); \
} while (0)
//exit();进程退出函数,在线程里不能使用,在线程处理函数中禁用
typedef struct MSG {
int acceptfd;
struct sockaddr_in clientaddr;
} msg_t;
void* func(void* arg)
{