set.c

来自「这是一个 在S3C44B0板子,基于UClinux的网络传输程序,send.c是」· C语言 代码 · 共 109 行

C
109
字号
#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 + =
减小字号Ctrl + -
显示快捷键?