📄 server2.c
字号:
#include<pthread.h> #include<sys/types.h> #include<sys/socket.h> #include<stdio.h> #include<netinet/in.h> #include<arpa/inet.h> #include<unistd.h> int clientnum=0; int flag; int client1fd,client2fd; int server_sockfd,client_sockfd; int client1first=0; int client2first=0; void *client2work(void *arg) { int num; while(1) { char ch; num=recv(client_sockfd,&ch,1,0); if(num>0) { printf("ending2\n"); if(clientnum==1) { ch='0'; send(client_sockfd,&ch,1,0); } else { ch++; send(client1fd,&ch,1,0); } printf("endiang2\n"); } } } int main(){ int server_len,client_len,num=0; struct sockaddr_in server_address; struct sockaddr_in client_address; unlink("server_socket"); server_sockfd = socket(AF_INET,SOCK_STREAM,0); printf(" fjjjfj%d\n",client_sockfd); server_address.sin_family = AF_INET; server_address.sin_addr.s_addr =htonl(INADDR_ANY); server_address.sin_port = htons(1989); server_len = sizeof(server_address); bind(server_sockfd,(struct sockaddr *)&server_address,server_len); listen(server_sockfd,5); printf("server waiting \n"); pthread_t client2thread; while(1) { printf(" fjjjfj%d\n",client_sockfd); client_sockfd =accept(server_sockfd,(struct sockaddr *)&client_address, &client_len); printf(" fjjjfj%d\n",client_sockfd); if(clientnum==0) { printf(" 1111\n",client_sockfd); clientnum+=1; client1fd=client_sockfd; } else { if(clientnum==1&&client_sockfd!=client1fd) { clientnum++; client2fd=client_sockfd; } } if(client2fd==client_sockfd&&client2first==0) { client2first=1; flag= pthread_create(&client2thread,NULL,client2work,NULL) ; } printf("new customer : %d\n",client_sockfd); if(client1fd==client_sockfd&&client1first==0) { client1first=1; while(1) { char ch; num=recv(client_sockfd,&ch,1,0); if(num>0){ printf("ending\n"); ch++; if(clientnum==1) send(client_sockfd,&ch,1,0); else { ch++; send(client2fd,&ch,1,0); } printf("endiang1\n"); } } } } close(client_sockfd);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -