<dfn id="is4kg"></dfn>
  • <ul id="is4kg"></ul>
  • <abbr id="is4kg"></abbr>
  • <ul id="is4kg"></ul>
    <bdo id="is4kg"></bdo>

    曙海教育集團(tuán)論壇Linux專區(qū)Linux應(yīng)用開發(fā) → linux下的應(yīng)用開發(fā)起步--簡化螞蟻制作(三)


      共有6474人關(guān)注過本帖樹形打印

    主題:linux下的應(yīng)用開發(fā)起步--簡化螞蟻制作(三)

    美女呀,離線,留言給我吧!
    wangxinxin
      1樓 個(gè)性首頁 | 博客 | 信息 | 搜索 | 郵箱 | 主頁 | UC


    加好友 發(fā)短信
    等級(jí):青蜂俠 帖子:1393 積分:14038 威望:0 精華:0 注冊:2010-11-12 11:08:23
    linux下的應(yīng)用開發(fā)起步--簡化螞蟻制作(三)  發(fā)帖心情 Post By:2010-11-23 10:29:54

    C.前面看了一大段是不是有點(diǎn)云里霧里的啊?是有點(diǎn)羅嗦,但是俗話說:“萬事總是開頭難”O(jiān)K,現(xiàn)在總算可以寫主文件了。

      

        下面就是ant.c

      

      #include "ant.h"

      #include "signal.h"

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

      int use_proxy;

      //代理的地址

      char proxy_server[100];

      //端口

      u_short proxy_port;

      //螞蟻數(shù)目

      int ant_num;

      //下載量

      int bulk;

      //下載進(jìn)程

      int progress;

      char cfgfile[256];

      char logfile[256];

      struct Ant* ants[10];

      struct Mission ms;

      //響應(yīng)異常退出,將url、ant數(shù)據(jù)結(jié)構(gòu)中的變量值,存放到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;

      //初始化環(huán)境參數(shù)

      init_env( );

      //對(duì)命令行傳進(jìn)來的參數(shù)做判斷

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

      switch (c){

      //取得螞蟻數(shù)目

      case 'n':

      ant_num=atoi(optarg);

      if(ant_num > MAXANTNUM)

      ant_num = MAXANTNUM;

      break;

      //取得目標(biāo)的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));

      }

      //將值賦代理的相關(guān)變量

      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));

      }

      //如果有下載日志,從日志中取相關(guān)信息

      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);

      }

      }

      }

      /

     


    支持(0中立(0反對(duì)(0單帖管理 | 引用 | 回復(fù) 回到頂部

    返回版面帖子列表

    linux下的應(yīng)用開發(fā)起步--簡化螞蟻制作(三)








    簽名
    主站蜘蛛池模板: 国产卡1卡2卡三卡网站免费| 性色av无码一区二区三区人妻| 制服美女视频一区| 麻豆福利在线观看| 在线观看亚洲免费视频| 久久亚洲私人国产精品va| 樱花视频www| 伊人久久综合谁合综合久久| 美女毛片一区二区三区四区| 国产精品igao视频网网址| yy6080理论午夜一级毛片| 无套内射无矿码免费看黄| 亚洲国产成人片在线观看| 爽爽爽爽爽爽爽成人免费观看| 国产丰满乱子伦无码专区| **毛片免费观看久久精品| 在线中文字幕视频| 中文字幕免费在线观看| 日本在线观看电影| 亚洲国产精品综合久久网各| 深夜福利视频导航| 啦啦啦手机在线中文观看 | Av鲁丝一区鲁丝二区鲁丝三区| 性做久久久久久免费观看| 久久精品隔壁老王影院| 欧产日产国产精品| 亚洲色成人WWW永久网站| 精品久久久久久无码人妻热| 国产人成午夜电影| 黑人巨大白妞出浆| 国产精品视频公开费视频| 一个人晚上在线观看的免费视频| 成人欧美一区二区三区黑人 | 美女的大胸又黄又www又爽| 国产无遮挡又黄又爽网站| 91精品国产色综合久久| 国自产偷精品不卡在线| 一本到在线观看视频| 很污很黄能把下面看湿的文字| 久久亚洲高清观看| 日本成人免费在线观看|