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

📄 tcps.c

📁 Linux下使用C编程
💻 C
字号:
#include <stdio.h>#include <stdlib.h>#include <errno.h>#include <string.h>#include <sys/types.h>#include <netinet/in.h>#include <sys/socket.h>#include <sys/wait.h>int main(int argc, char *argv[]) {  int sockfd,new_fd;  struct sockaddr_in server_addr;  struct sockaddr_in client_addr;  int sin_size,portnumber;  char hello[]="Hello! Are You Fine?\n";  portnumber=6868;/* 服务器端开始建立socket描述符 */  if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)    {         fprintf(stderr,"Socket error:%s\n\a",strerror(errno));         exit(1);  } /* 服务器端填充 sockaddr结构  */   bzero(&server_addr,sizeof(struct sockaddr_in));  server_addr.sin_family=AF_INET;  server_addr.sin_addr.s_addr=htonl(INADDR_ANY);  server_addr.sin_port=htons(portnumber);   /* 捆绑sockfd描述符  */   if(bind(sockfd,(struct sockaddr *)(&server_addr),sizeof(struct sockaddr))==-1)  {         fprintf(stderr,"Bind error:%s\n\a",strerror(errno));         exit(1);  }   /* 监听sockfd描述符  */  if(listen(sockfd,5)==-1)  {         fprintf(stderr,"Listen error:%s\n\a",strerror(errno));         exit(1);  }  while(1)  {         /* 服务器阻塞,直到客户程序建立连接  */         sin_size=sizeof(struct sockaddr_in);         if((new_fd=accept(sockfd,(struct sockaddr *)(&client_addr),&sin_size))==-1)         {                 fprintf(stderr,"Accept error:%s\n\a",strerror(errno));                 exit(1);     }         fprintf(stderr,"Server get connection from %s\n",                                         inet_ntoa(client_addr.sin_addr)); 	int numbytes;        char tmp[300];	if ((numbytes=recv(new_fd, tmp, sizeof(tmp), 0)) == -1) {         perror("recv");         exit(1);    	 }         char type[5];        memcpy(type,tmp,4);	type[4]=0;        printf("numbytes is %d,recieve :%s\n",numbytes,tmp); 	printf("type is :%s\n",type);         int plant;        memcpy(&plant,tmp+4,4);	printf("plant is :%d\n",plant); 	int unit;	memcpy(&unit,tmp+8,4);	printf("unit is :%d\n",unit);         fflush(stdout);       /*if(write(new_fd,hello,strlen(hello))==-1)         {          fprintf(stderr,"Write Error:%s\n",strerror(errno));          exit(1);         } */        /* 这个通讯已经结束     */         close(new_fd); /* 循环下一个     */     }  close(sockfd);  exit(0); } 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -