📄 tcpser.c
字号:
#include<sys/types.h>#include<sys/socket.h>#include<netinet/in.h>#include<arpa/inet.h>#include<unistd.h>#define PORT 5678#define MAX 10main(){ int sockfd,newsockfd,is_connected[MAX],fd; struct sockaddr_in addr; int addr_len = sizeof(struct sockaddr_in); fd_set myreadfds; char msgbuffer[256]; char msg[] ="This is the message from server.Connected.\n"; if ((sockfd = socket(AF_INET,SOCK_STREAM,0))<0) { perror("socket"); exit(1); } else { printf("socket created .\n"); printf("socked id: %d \n",sockfd); } bzero(&addr,sizeof(addr)); addr.sin_family =AF_INET; addr.sin_port = htons(PORT); addr.sin_addr.s_addr = htonl(INADDR_ANY); if(bind(sockfd,&addr,sizeof(addr))<0) { perror("connect"); exit(1); } else { printf("connected.\n"); printf("local port:%d\n",PORT) ; } if(listen(sockfd,3)<0) { perror("listen"); exit(1); } else { printf("listenning......\n"); } for(fd=0;fd<MAX;fd++) { is_connected[fd]=0;/*设置所有*/ } while(1) { FD_ZERO(&myreadfds); FD_SET(sockfd,&myreadfds); for(fd=0;fd<MAX;fd++) { if(is_connected[fd]) { FD_SET(fd,&myreadfds); } } if(!select(MAX,&myreadfds,NULL,NULL,NULL)) { continue; } for(fd=0;fd<MAX;fd++) { if(FD_ISSET(fd,&myreadfds)) { if(sockfd==fd) { if((newsockfd = accept (sockfd,&addr,&addr_len))<0) { perror("accept"); } write(newsockfd,msg,sizeof(msg)); is_connected[newsockfd] =1; printf("cnnect from %s\n",inet_ntoa(addr.sin_addr)); } else { bzero(msgbuffer,sizeof(msgbuffer)); if(read(fd,msgbuffer,sizeof(msgbuffer))<=0) { printf("connect closed.\n"); is_connected[fd]=0; close(fd); } else { write(fd,msgbuffer,sizeof(msgbuffer)); printf("message:%s \n",msgbuffer); } } } } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -