📄 server.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 + -