📄 server.c
字号:
#include<stdio.h>#include<sys/socket.h>#include<netinet/in.h>#include<pthread.h>#define SERVER_PORT 8010#define BACKLOG 5#define BUF_SIZE 1024void* dorecv(void*);void* dosend(void*);int main(){ int serversocket, clientsocket; struct sockaddr_in serveraddr; serversocket = socket(AF_INET, SOCK_STREAM, 0); if(serversocket < 0){ printf("server socket error!"); } printf("server socket ok!\n"); bzero(&serveraddr, sizeof(serveraddr)); serveraddr.sin_family = AF_INET; serveraddr.sin_addr.s_addr = htonl(INADDR_ANY); serveraddr.sin_port = htons(SERVER_PORT); if(bind(serversocket, (struct sockaddr *)&serveraddr, sizeof(serveraddr))<0 ){ printf("bind error\n"); exit(1); } printf("bind ok\n"); if(listen(serversocket, BACKLOG) < 0){ printf("listen error\n"); exit(1); } printf("listening clients...\n"); while(1){ clientsocket = accept(serversocket, NULL, NULL); if(clientsocket < 0){ printf("accept error\n"); exit(1); } printf("client accepted, socket: %d\n", clientsocket); pthread_t t1, t2; if(pthread_create(&t1, NULL, dorecv, (void*)clientsocket) != 0) { printf("creat recieve thread error"); exit(1); } if(pthread_create(&t2, NULL, dosend, (void*)clientsocket) != 0) { printf("creat recieve thread error"); exit(1); } //close(clientsocket); printf("%d > create thread ok\n", clientsocket); } return 0;}void* dorecv(void *para){ char buf[BUF_SIZE]; int n; int clientsocket = (int)para; while(1){ n = recv(clientsocket, buf, BUF_SIZE, 0); if(n < 0){ printf("%d > recv error\n", clientsocket); return; } if(n == 0){ printf("%d > client exit\n", clientsocket); break; } printf("%d > %s\n", clientsocket, buf); } close(clientsocket); printf("server recv close ok\n");}void* dosend(void *para) { char buf[BUF_SIZE]; int n; int clientsocket = (int)para; while(1) { scanf("%s", buf); n = strlen(buf); if(n == 0) break; if(send(clientsocket, buf, n+1, 0) < 0) { printf("send error\n"); return; } printf("server:send ok\n"); } close(clientsocket); printf("server sender close ok\n");}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -