📄 set.c
字号:
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <sys/socket.h>#include <netinet/in.h>#include <errno.h>#define SERVER_PORT 20000#define QUEUE_LENGTH 20#define MAXLEN 100typedef struct { char ip[16]; char netmask[16]; char gateway[16]; char SeverIP[16]; int DelayTime; char id[21]; char localserverip[16];} eth0_set; //全局变量定义eth0_set netset;//把接收过来的配置参数写如文件void writefile(){ char wbuf[150]; FILE *fp; char *dir; char fpathname[MAXLEN]; char strdelaytime[10]; memset(wbuf,0,sizeof(wbuf)); dir="/mnt/"; strcpy(wbuf,netset.ip); strcat(wbuf,"\n"); strcat(wbuf,netset.netmask); strcat(wbuf,"\n"); strcat(wbuf,netset.gateway); strcat(wbuf,"\n"); strcat(wbuf,netset.SeverIP); strcat(wbuf,"\n"); sprintf(strdelaytime,"%d",netset.DelayTime); strcat(wbuf,strdelaytime); strcat(wbuf,"\n"); strcat(wbuf,netset.localserverip); strcat(wbuf,"\n"); strcat(wbuf,netset.id); strcat(wbuf,"\n"); strcpy(fpathname,dir); strcat(fpathname,"temp"); fp=fopen(fpathname,"w"); if(fp!=NULL){ fwrite(wbuf,strlen(wbuf),1,fp); printf("write set-file success\n"); fclose(fp); } else { printf("cannot open set-file\n"); } }void set(){ int newfd; struct sockaddr_in setaddr; int length=sizeof(setaddr); int sockset; setaddr.sin_family=AF_INET; setaddr.sin_port=htons(SERVER_PORT); setaddr.sin_addr.s_addr=INADDR_ANY; bzero(&(setaddr.sin_zero),8); sockset=socket(AF_INET,SOCK_STREAM,0); if(bind(sockset,(struct sockaddr *)&setaddr,length)<0){ perror("bind"); exit(1); } if((listen(sockset,QUEUE_LENGTH))<0){ perror("listening"); exit(1); } while(1){ if((newfd=accept(sockset,(struct sockaddr*)&setaddr,&length))<0){ if(errno==EINTR) continue; else perror("accept"); } memset(&netset,0,sizeof(eth0_set)); recv(newfd,(char *)&netset,sizeof(eth0_set),0); writefile(); close(newfd); }}//main beginint main(int argc,char **argv){ set(); return 0;}//main end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -