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

📄 lan_ip_night.ec

📁 计费部分源程序。我认为该软件极好
💻 EC
字号:
/*
数据库版本,同时插入数据库
每天午夜ip_night分析当日a-tmp文件,生成日期数据文件,追加各IP文件
*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <strings.h>
#include <time.h>
$include  sqlca;

struct tm s;
struct tm *t;

#define K 1024
#define IP_NUM 1000
struct {
   char ip[20];
   long n_in, n_out, w_in, w_out;
   double n_sum, w_sum, nw_sum;
} ip_list[IP_NUM];

main()
{

  char filename[80], buff[400], s_today[100];
  $char ip[20],temp[100];
  $long n_in, n_out, w_in, w_out;
  double n_in_sum=0, n_out_sum=0, w_in_sum=0, w_out_sum=0,
	 n_total=0, w_total=0, total=0;
  char *ptr;
  int i,j,ip_list_up=0;
  FILE *fp,*fw,*fi;
  time_t t_stru;

 $database scs_internet@ONLINE;

  if (sqlca.sqlcode<0 ) {
      printf("open database is error! %d \n",sqlca.sqlcode);
      exit (-1);
    }

 time(&t_stru);
 t = localtime(&t_stru);

	system("date >> l_night.log");
	system("echo l_night start >> l_night.log");

 sprintf(s_today,"%04d%02d%02d",(1900+t->tm_year),t->tm_mon+1,t->tm_mday);

      strcpy(filename,"a_tmp");
      if((fp=fopen(filename,"r")) == NULL)
      {
         printf("not found %s \n",filename); 
         exit(-1);
      }

      strcpy(filename,"data.dat");
      if((fw=fopen(filename,"a+")) == NULL)
      {
         printf("can't write %s \n",filename); 
         exit(-1);
      }
	sprintf(temp,"DATE=%s\n",s_today);
	fputs(temp,fw);

/*      printf("found %s\n",filename);*/
      while ( ! feof(fp))
      {
         fgets(buff,200,fp);

/*printf("line=%s",buff);*/

	 ptr = strtok(buff," "); 
	 if (ptr == NULL) continue;
	 strcpy(ip,ptr);  
/*printf("ip=<%s>  ",ip);*/

	 ptr = strtok(NULL," "); 
	 if (ptr == NULL) continue;
	 strcpy(temp,ptr); /*number*/
	 n_in = atol(temp);
/*printf(" n_in = %ld\n",n_in);*/

	 ptr = strtok(NULL," "); 
	 if (ptr == NULL) continue;
	 strcpy(temp,ptr); /*number*/
	 n_out = atol(temp);

	 ptr = strtok(NULL," "); 
	 if (ptr == NULL) continue;
	 strcpy(temp,ptr); /*number*/
	 w_in = atol(temp);

	 ptr = strtok(NULL," "); 
	 if (ptr == NULL) continue;
	 strcpy(temp,ptr); /*number*/
	 w_out = atol(temp);

/**/
         for(j=0; j<ip_list_up;j++)
         if (!strcmp(ip_list[j].ip,ip))
	 {
		ip_list[j].n_in += n_in;	
		ip_list[j].n_out += n_out;	
		ip_list[j].w_in += w_in;	
		ip_list[j].w_out += w_out;	
		break;
	 }

         if (j==ip_list_up)
	 {
	        strcpy(ip_list[j].ip,ip);
                ip_list_up++;
		ip_list[j].n_in = n_in;	
		ip_list[j].n_out = n_out;	
		ip_list[j].w_in = w_in;	
		ip_list[j].w_out = w_out;	
         }
      } /* end while */

      for(j=0; j< ip_list_up;j++)
      {
	ip_list[j].n_sum = (ip_list[j].n_in+ip_list[j].n_out)/K;
	ip_list[j].w_sum = (ip_list[j].w_in+ip_list[j].w_out)/K;
	ip_list[j].nw_sum = (ip_list[j].n_sum+ip_list[j].w_sum);

	n_in_sum += (ip_list[j].n_in);
	n_out_sum += (ip_list[j].n_out);
	w_in_sum += (ip_list[j].w_in);
	w_out_sum += (ip_list[j].w_out);

	/*插入数据库ip_day*/
		strcpy(ip,ip_list[j].ip);
		n_in = ip_list[j].n_in;
		n_out = ip_list[j].n_out;
		w_in = ip_list[j].w_in;
		w_out = ip_list[j].w_out;
	$insert into lan_ip_day(login_id,d_date,n_in,n_out,w_in,w_out,fee_id)
	  values($ip,today,$n_in,$n_out,$w_in,$w_out,-1);

	printf("IP=%s,国内流入=%ld(K),国内流出=%ld(K),国外流入=%ld(K),国外流出=%ld(K)\n",ip_list[j].ip,
		  ip_list[j].n_in/K, ip_list[j].n_out/K,
		  ip_list[j].w_in/K, ip_list[j].w_out/K);

	/*写data.dat文件*/
	sprintf(buff,"%s %10ld %10ld %10ld %10ld\n",ip_list[j].ip,
		  ip_list[j].n_in/K, ip_list[j].n_out/K,
		  ip_list[j].w_in/K, ip_list[j].w_out/K);
	fputs(buff,fw);

	/*同时写IP文件*/
        strcpy(filename,ip_list[j].ip);
        if((fi=fopen(filename,"a+")) == NULL)
        {
         printf("can't write %s \n",filename); 
         exit(-1);
        }
	sprintf(temp,"DATE=%s\n",s_today);
	fputs(temp,fi);
	fputs(buff,fi);
	fclose(fi);

      }

	n_in_sum = n_in_sum/K/K;
	n_out_sum = n_out_sum/K/K;
	w_in_sum = w_in_sum/K/K;
	w_out_sum = w_out_sum/K/K;
	n_total = n_in_sum + n_out_sum;
	w_total = w_in_sum + w_out_sum;
	total = n_total + w_total;

	printf("\n		流量合计:\n");
	printf("\n 国内流入=%10.2f(M),国内流出=%10.2f(M),国外流入=%10.2f(M),国外流出=%10.2f(M),\n 国内总计=%15.2f(M),国外总计=%15.2f(M), 全部合计= %15.2f(M)\n\n\n",
		n_in_sum,n_out_sum,w_in_sum,w_out_sum,n_total,w_total,total);
/*
	fputs("\n		流量合计:\n",fw);
	fprintf(buff,"\n 国内流入=%f(M),国内流出=%f(M),国外流入=%f(M),国外流出=%f(M),\n 国内总计=%f(M),国外总计=%f(M), 全部合计= %f(M)\n",
		n_in_sum,n_out_sum,w_in_sum,w_out_sum,n_total,w_total,total);
	fputs(buff,fw);
*/	fclose(fw);

	fclose(fp);
/*	system("mv a_tmp a_see.dat");*/
	printf("	处理成功结束 \n");

	system("date >> l_night.log");
	system("echo l_night stop >> l_night.log");

	$close database;
}

⌨️ 快捷键说明

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