久久中文视频-久久中文网-久久中文亚洲国产-久久中文字幕久久久久-亚洲狠狠成人综合网-亚洲狠狠婷婷综合久久久久

以文本方式查看主題

-  曙海教育集團論壇  (http://www.xinguifushi.cn/bbs/index.asp)
--  Linux應用開發  (http://www.xinguifushi.cn/bbs/list.asp?boardid=32)
----  linux下的應用開發起步--簡化螞蟻制作(三)  (http://www.xinguifushi.cn/bbs/dispbbs.asp?boardid=32&id=1660)

--  作者:wangxinxin
--  發布時間:2010-11-23 10:29:54
--  linux下的應用開發起步--簡化螞蟻制作(三)

C.前面看了一大段是不是有點云里霧里的啊?是有點羅嗦,但是俗話說:“萬事總是開頭難”OK,現在總算可以寫主文件了。

  

    下面就是ant.c

  

  #include "ant.h"

  #include "signal.h"

  //0表示不用,1表示用代理

  int use_proxy;

  //代理的地址

  char proxy_server[100];

  //端口

  u_short proxy_port;

  //螞蟻數目

  int ant_num;

  //下載量

  int bulk;

  //下載進程

  int progress;

  char cfgfile[256];

  char logfile[256];

  struct Ant* ants[10];

  struct Mission ms;

  //響應異常退出,將url、ant數據結構中的變量值,存放到log。

  void justpause()

  {

  int i;

  FILE* log;

  log=fopen(logfile,"w");

  fprintf(log,"%s ",ms.url);

  for(i=0;iamount!=0)

  fprintf(log, "%d:%d ",ants[i]->position,ants[i]->amount);

  fclose(log);

  exit(1);

  }

  //總算挨到主了,呵呵。。。。。

  int main(int argc,char** argv)

  {

  int n;

  int maxfd;

  char savefile[256];

  FILE* goods;

  FILE* log;

  fd_set rset,aset;

  int finished;

  int length;

  char status[80];

  char c;

  struct sigaction sa;

  //初始化環境參數

  init_env( );

  //對命令行傳進來的參數做判斷

  while((c=getopt(argc,argv,"n:u:s:p:l:h"))!=EOF){

  switch (c){

  //取得螞蟻數目

  case \'n\':

  ant_num=atoi(optarg);

  if(ant_num > MAXANTNUM)

  ant_num = MAXANTNUM;

  break;

  //取得目標的url地址。

  case \'u\':

  strcpy(ms.url, optarg);

  break;

  //取得代理的地址

  case \'s\':

  strcpy(proxy_server, optarg);

  use_proxy=1;

  break;

  //取得代理的端口

  case \'p\':

  use_proxy=1;

  proxy_port=(u_short)atoi(optarg);

  break;

  //取得日志文件名

  case \'l\':

  strcpy(logfile,optarg);

  break;

  case \'h\':

  printf("usage: ant -n antnum -u url -s proxyserver -p

  prxoy_port -l logfile ");

  return 1;

  }

  }

  //從日志文件中讀取url

  if(logfile[0] != 0){

  log = fopen(logfile, "r+");

  strcpy(ms.url,get_url_from_log(log));

  }

  //將值賦代理的相關變量

  if(use_proxy){

  strcpy(ms.host,proxy_server);

  ms.port=proxy_port;

  }else{

  strcpy(ms.host, extract_from_url(ms.url, SITENAME));

  ms.port = atoi(extract_from_url(ms.url, PORTNAME));

  }

  //如果有下載日志,從日志中取相關信息

  if(logfile[0] != 0){

  printf("The file you havent download,continue.......");

  n=0;

  strcpy(ms.url,get_url_from_log(log));

  while (1) {

  ants[n] = (struct Ant*)malloc(sizeof(struct Ant));

  memset(ants[n], 0, sizeof(struct Ant));

  if(!(assign_mission(log, ants[n])))

  break;

  n++;

  if(n > MAXANTNUM){

  printf("You logfile must be wrong! ");

  exit(1);

  }

  }

  fclose(log);

  free(ants[n]);

  ant_num=n;

  }

  else{

   //取得下載文件的大小,為每只螞蟻分配下載位置。

  bulk=get_size_of_url(&ms);

  if(bulk==0){

   printf("Cannot get the size of this object! ");

  ant_num=1;

  ants[0] = (struct Ant*)malloc(sizeof(struct Ant));

  ants[0]->position=0;

  ants[0]->amount=1073741823;

  }

  else if(bulk==-1){

   printf("Cannot connect to the site! ");

   exit(1);

  }

  else{

  for(n=0; nposition = (bulk/ant_num)*n;

  if(n!=(ant_num-1))

  ants[n]->amount = bulk/ant_num;

  else

  ants[n]->amount = bulk-(bulk/ant_num)*(ant_num-1);

  }

  }

  }

  /

 


主站蜘蛛池模板: 91精品国产免费久久久久久青草 | 成 人色 网 站 欧美大片在线观看 | 毛片在线播放网址 | 欧美怡红院免费全视频 | 美女扒开腿让男人桶个爽 | 成人欧美在线视频 | 中文字幕在线观看不卡视频 | 亚洲一区天堂 | 成人午夜精品 | 日本免费特黄aa毛片 | 一区二区三区四区在线 | 免费特黄一级欧美大片在线看 | 精品国产一区二区三区久久 | 在线视频一区二区三区三区不卡 | 国产欧美一区二区精品性色 | 国产最猛性xxxxxx69交 | 精品中文字幕在线观看 | 国内精品亚洲 | 国产精品亚洲欧美云霸高清 | 欧美国产成人一区二区三区 | 亚洲网站视频 | 欧美精品午夜 | 亚洲男人的天堂成人 | 久久久精品免费热线观看 | 三级伦理网站 | 亚洲欧美日韩国产精品影院 | a毛片免费全部在线播放毛 a毛片免费视频 | 亚洲一区二区中文字幕 | 亚洲乱码一二三四五六区 | 国产精品免费看 | 颜值超高的女神啪啪 | 日韩国产欧美在线观看一区二区 | 国产精品三 | 特级黄色毛片视频 | 亚洲一区二区三区在线网站 | 大片毛片 | 国产毛片久久精品 | 中国japanesevideo乱| 日韩精品a在线视频 | 欧美毛片一级的免费的 | 99国内视频|