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

📄 tcpser.c

📁 该程序包详细讲述了Linux环境下的Socket编程
💻 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 + -