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

📄 ch_info_server.cpp

📁 发送文本文件到服务器
💻 CPP
字号:
#include <sys/types.h>#include <stdlib.h>#include <fcntl.h>#include <sys/time.h>#include <unistd.h>#include <stdio.h>#include <sys/types.h>#include <stdlib.h>#include <sys/wait.h>#include <string.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <signal.h>#include <time.h>#include <netinet/in.h>#include <arpa/inet.h>#include <unistd.h>#include <semaphore.h>#include <error.h>#include "mysock.h"extern int errno;#define MAXCHANNELNUM 200#define MAXNAMELENGTH 256#define MAXCHANNELNAME 20struct CHAN{    int channel_no;    int ip;    int port;    char channel_name[MAXCHANNELNAME];    int v_pid;    int a_pid;    int rate;    int type;};struct CHANNEL_INFO_PACKET{    int command;   //100    int chanNum;     struct CHAN chan[MAXCHANNELNUM];}chPack;char channel_ip[MAXNAMELENGTH]="225.8.8.8", lip[MAXNAMELENGTH]="192.168.6.178";int  channel_port=8888, lport=2222;mySock t_sock;int listenfd=0, connfd=0;int get(char *name,char *s);double CountSecond(char *s);FILE * fp;void parent_Quit(int signo){    t_sock.Close();     return;}int main(int argv, char **argc){         int index=0;  char * tempstr;  char  fname[MAXNAMELENGTH]="/mnt/project/vodproject/Ch.txt";  char  str[MAXNAMELENGTH];  char  source_ip[32],source_port[16],target_ip[32],  target_port[16],start_time[64],end_time[64],channel_no[16],  bandwidth[128],channel_name[MAXNAMELENGTH],v_pid[16],a_pid[16],mode[6],program_type[6];  time_t currentTime;  char timeStr[128];  struct tm * localTime;  int i;                for ( index=1; index<argv; index++) {    if ( (tempstr=strstr(argc[index], "channel_ip="))!=NULL ) {      tempstr+=11;      strcpy(channel_ip, tempstr);      }    else if ( (tempstr=strstr(argc[index], "lip="))!=NULL ) {      tempstr+=4;      strcpy(lip, tempstr);      }    else if ( (tempstr=strstr(argc[index], "channel_port="))!=NULL ) {      tempstr+=13;      channel_port=atoi(tempstr);      }    else if ( (tempstr=strstr(argc[index], "lport="))!=NULL ) {      tempstr+=6;      lport = atoi(tempstr);      }    else if ( (tempstr=strstr(argc[index], "script="))!=NULL ) {      tempstr+=7;      strcpy(fname,tempstr);      }    }	    signal(SIGKILL, parent_Quit);    signal(SIGQUIT, parent_Quit);    signal(SIGTERM, parent_Quit);    signal(SIGINT , parent_Quit);    signal(SIGSTOP, parent_Quit);	            chPack.command=100;    chPack.chanNum=0;    if (!t_sock.Create(channel_ip, channel_port, lip, lport, S_WYJ_SEND)){      printf("create socket failure\n");      exit(0);      }	            while ( 1 ){      chPack.chanNum=0;      while((fp=fopen(fname,"r"))==NULL){        printf("Maybe program sheet is being edit,wait 5 seconds.\n");	sleep(5);   	}	while (!feof(fp)){	  fscanf(fp,"%s",str);	  while(strcmp(str,"[channel]")&&(!feof(fp)))	    fscanf(fp,"%s",str);	    if(feof(fp))	      break;             // get channel description   	    if((get("source_ip=",source_ip))&& (get("source_port=",source_port))	       && (get("target_ip=",target_ip))&& (get("target_port=",target_port))               &&(get("start_time=",start_time))&&(get("end_time=",end_time))               &&(get("channel_no=",channel_no))&&(get("bandwidth=",bandwidth))               &&(get("describe=",channel_name))&&(get("mode=",mode))               &&(get("v_pid=",v_pid))&&(get("a_pid=",a_pid))               &&(get("type=",program_type))){               currentTime = time(NULL);               localTime = localtime(&currentTime);               sprintf(timeStr,"%d:%d:%d",localTime->tm_hour,localTime->tm_min,localTime->tm_sec);               // if mode==0 || mode==1 then output               if( (atoi(mode)==0)|| (atoi(mode)==1) ){                 chPack.chan[chPack.chanNum].channel_no=atoi(channel_no);                 inet_aton(target_ip,(struct in_addr *)&chPack.chan[chPack.chanNum].ip);                 chPack.chan[chPack.chanNum].port=atoi(target_port);                 strncpy(chPack.chan[chPack.chanNum].channel_name,channel_name,MAXCHANNELNAME-1);                 //printf("%d %d %s\n",chPack.chan[chPack.chanNum].ip,chPack.chan[chPack.chanNum].port,chPack.chan[chPack.chanNum].channel_name);                 chPack.chan[chPack.chanNum].v_pid=atoi(v_pid);                 chPack.chan[chPack.chanNum].a_pid=atoi(a_pid);                 chPack.chan[chPack.chanNum].type=atoi(program_type);                for(i=0;i<strlen(bandwidth);i++)                   if(bandwidth[i]<'0'||bandwidth[i]>'9')                   break;                if(i==strlen(bandwidth))                     chPack.chan[chPack.chanNum].rate=atoi(bandwidth);                else                   chPack.chan[chPack.chanNum].rate=0;//   printf("ch %d is active.\n",chPack.chan[chPack.chanNum].channel_no);                      chPack.chanNum++;                 }   	     }           }       fclose(fp);        //   printf("there are %d channels.\n",chPack.chanNum);              if ( !t_sock.SendMsg((char *)&chPack, 2*sizeof(int)+chPack.chanNum*sizeof(CHAN)))          printf("send error\n");       sleep(30);     }	// end while (1)	    }	double CountSecond(char *s){//turn the XX:xx:xx to xxxx seconds  int hour,minute,second;  hour=atoi(s);  minute=atoi(strchr(s,':')+1);  second=atoi(strrchr(s,':')+1);  return (hour*3600+minute*60+second); }  int get(char *name,char *s){  char str[128];  fscanf(fp,"%s",str);  if(!strcmp(str,name)){    fscanf(fp,"%s",s);     if (!strcmp(name,"source_ip=")){      if(INADDR_NONE==inet_addr(s)){        printf("the source_ip is invalid\n");        return 0;                                    }      return 1;        }else  if(!strcmp(name, "source_port=")){       if ((atoi(s))<0||(atoi(s))>9999){      	 printf("the source_port is invalid\n");         return 0;       }       return 1;    	        	    }else  if(!strcmp(name, "target_ip=")){       if(INADDR_NONE==inet_addr(s)){         printf("the target_ip is invalid");         return 0;                                     }       return 1;       }else  if(!strcmp(name, "target_port=")){       if ((atoi(s))<0||(atoi(s))>9999){         printf("the target_port is invalid");         return 0;         }       return 1;   	                  }else  if(!strcmp(name, "start_time=")){       return 1;                	    }else  if(!strcmp(name, "end_time=")){       return 1;     }else  if(!strcmp(name, "channel_no=")){                                   if (atoi(s)<0){         printf("the channel_no is invalid");         return 0;         }       return 1;        }else  if( !strcmp(name, "bandwidth=")){       if (atof(s)<0){         printf("the bandwidth is invalid");         return 0;         }    }else if( !strcmp(name, "describe=")){       return 1;     }else if( !strcmp(name, "v_pid=")){       return 1;     }else if( !strcmp(name, "a_pid=")){       return 1;     }else if( !strcmp(name, "mode=")){       return 1;     }else if( !strcmp(name, "type=")){       return 1;     }     return 1;            }  return 0;}

⌨️ 快捷键说明

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