⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 server_pthread.c

📁 linux下的tcp通信多线程示例,通过创建多线程来建立TCP联接.在嵌入式系统下运行
💻 C
字号:
#include	<sys/types.h>	/* basic system data types */#include	<sys/socket.h>	/* basic socket definitions */#include	<sys/time.h>	/* timeval{} for select() */#include	<time.h>		/* timespec{} for pselect() */#include	<netinet/in.h>	/* sockaddr_in{} and other Internet defns */#include	<arpa/inet.h>	/* inet(3) functions */#include	<errno.h>#include	<fcntl.h>		/* for nonblocking */#include	<netdb.h>#include	<signal.h>#include	<stdio.h>#include	<stdlib.h>#include	<string.h>#include	<sys/stat.h>	/* for S_xxx file mode constants */#include	<sys/uio.h>		/* for iovec{} and readv/writev */#include	<unistd.h>#include	<sys/wait.h># include	<sys/select.h>	/* for convenience */# include	<poll.h>		/* for convenience */# include	<strings.h>		/* for convenience */# include	<sys/ioctl.h># include	<pthread.h>int read_and_send(int sockfd){#if 1	write(sockfd,"1234",4);	return 0;#endif}void *doit(void *arg){	printf("pid=%d,pthreadid=%d\n",getpid(),pthread_self());	pthread_detach(pthread_self());	read_and_send((int) arg);	close((int) arg);	return(NULL);}voidsig_int(int signo){	exit(0);}#define	SA	struct sockaddr#define LISTENQ		1024intmain(int argc, char **argv){	int			listenfd, connfd;	pthread_t		tid;	socklen_t		clilen;	struct sockaddr_in	servaddr, cliaddr;	int serverport=0;	printf("hehe,begin ok\n");	if (argc == 1)		serverport=8888;	else if (argc == 2)		serverport=atoi(argv[1]);	else{		printf("usage: server_pthread <port#>\n");		exit(0);	}	listenfd = socket(AF_INET, SOCK_STREAM, 0);	bzero(&servaddr, sizeof(servaddr));	servaddr.sin_family      = AF_INET;	servaddr.sin_addr.s_addr = htonl(INADDR_ANY);	servaddr.sin_port        = htons(serverport);	/* daytime server */	bind(listenfd, (SA *) &servaddr, sizeof(servaddr));	listen(listenfd, LISTENQ);	signal(SIGINT, sig_int);	for ( ; ; ) {		clilen = sizeof(cliaddr);		connfd = accept(listenfd, (SA *)&cliaddr, &clilen);		pthread_create(&tid, NULL, &doit, (void *) connfd);	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -