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

📄 server.c

📁 c 语言.多线程.socket网络编程服务端.对select的应用
💻 C
字号:
#include <string.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <errno.h>#include <pthread.h>#define MYPORT 			8081#define MAXBACKLOG		5#define STRLEN			1024void *Recv(void * arg1){	int i,ret;	int outp=0;	int outfd=*(int *)arg1;	char buf[STRLEN];	while(1)	{		memset(buf,0,STRLEN);		ret=recv(outfd,buf,STRLEN,0);		if(ret>0){			buf[ret]='\0';			printf("server:recv buf=[%s]\n",buf);		}else if(ret<0){			printf("server:recv ret=[%d],errno=[%d]\n",ret,errno);			break;		}		memset(buf,0,STRLEN);		sprintf(buf,"HTTP/1.1 200 OK\r\nContent-Length: 2\r\nContent-Type: text/html;charset=gb2312\r\n\r\nok");		ret=send(outfd,buf,strlen(buf),0);		if(ret>0){			printf("server:listend ret=[%d],buf=[%s]\n",ret,buf);		}		if(ret<0){			printf("server:listend ret=[%d],errno=[%d]\n",ret,errno);			break;		}			}}int main(){	int sockefd,listend;	int ret,i,addrlen;	struct sockaddr_in my_addr;	char buf[STRLEN];	pthread_t thid;		sockefd=socket(AF_INET,SOCK_STREAM,0);		my_addr.sin_family=AF_INET;	my_addr.sin_port=htons(MYPORT);	my_addr.sin_addr.s_addr=inet_addr("192.168.0.102");	bzero(&my_addr.sin_zero,8);		ret=bind(sockefd,(struct sockaddr*)&my_addr,sizeof(struct sockaddr_in));	if(ret<0){		printf("server:bind ret=[%d],errno=[%d]\n",ret,errno);		return -1;	}		ret=listen(sockefd,MAXBACKLOG);	if(ret<0){		printf("server:listen ret=[%d]\n",ret);		return -1;	}		while(1){		addrlen=sizeof(struct sockaddr_in);		listend=accept(sockefd,(struct sockaddr *)&my_addr,&addrlen);		if(listend==-1){			printf("server:accept listend=[%d],errno=[%d]\n",listend,errno);			return listend;		}else{			if(pthread_create(&thid,NULL,Recv,&listend)<0){				printf("create the %dth thread fail\n",i);				return -1;			}		}		}	printf("server:exit\n");	return 0;}

⌨️ 快捷键说明

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