亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ctorrent.cpp

?? 在嵌入linux-arm上運行的bt下載應用程序
?? CPP
字號:
#include "./def.h"#include <sys/types.h>#ifdef WINDOWS#include <windows.h>#else#include <unistd.h>#include <signal.h>#endif#include <sys/time.h>#include <time.h>#include <string.h>#include <stdio.h>#include <stdlib.h>#include "btconfig.h"#include "btcontent.h"#include "downloader.h"#include "peerlist.h"#include "tracker.h"#include "ctcs.h"#include "./config.h"#include <fcntl.h>#ifndef WINDOWS#include "sigint.h"#endifvoid usage();int param_check(int argc, char **argv);#ifdef WINDOWSint APIENTRY WinMain(HINSTANCE hInstance,                     HINSTANCE hPrzevInstance,                     LPSTR     lpCmdLine,                     int       nCmdShow){}#elsevoid Random_init(){  struct timeval tv;   gettimeofday(&tv,(struct timezone*) 0);  unsigned int seed = tv.tv_usec + tv.tv_sec + getpid();  srandom(seed);}int main(int argc, char **argv){  Random_init();  arg_user_agent = new char[MAX_PF_LEN];  strcpy(arg_user_agent,PEER_PFX);      if( argc < 2 || param_check(argc,argv) < 0 ){    usage();    exit(1);  }  if( arg_flg_make_torrent ){    if( !arg_announce ){ fprintf(stderr,"please use -u to specify a announce url!\n"); exit(1);}    if( !arg_save_as ){ fprintf(stderr,"please use -s to specify a metainfo file name!\n"); exit(1);}    if( BTCONTENT.InitialFromFS(arg_metainfo_file, arg_announce,  arg_piece_length) < 0 ||        BTCONTENT.CreateMetainfoFile(arg_save_as) < 0){      fprintf(stderr,"create metainfo failed.\n");      exit(1);    }    printf("create metainfo file %s successful.\n", arg_save_as);    exit(0);  }    if( BTCONTENT.InitialFromMI(arg_metainfo_file, arg_save_as) < 0){    fprintf(stderr,"error,initial meta info failed.\n");    exit(1);  }  if( !arg_flg_exam_only && !arg_flg_check_only){    if(WORLD.Initial_ListenPort() < 0){      fprintf(stderr,"warn, you couldn't accept connection.\n");    }    if( arg_ctcs ) CTCS.Initial();        Tracker.Initial();        signal(SIGPIPE,SIG_IGN);    signal(SIGINT,sig_catch);    signal(SIGTERM,sig_catch);    Downloader();  }  if( cfg_cache_size ) BTCONTENT.FlushCache();  if( arg_bitfield_file ) BTCONTENT.pBF->WriteToFile(arg_bitfield_file);  WORLD.CloseAll();  if (arg_runtime_status_fd >0) {    close(arg_runtime_status_fd);    arg_runtime_status_fd = -1;  }  exit(0);}#endifint param_check(int argc, char **argv){  int c, l;  char *s;  char *arg_runtime_status_file;  while ( ( c = getopt(argc,argv,"b:cC:D:e:E:fi:l:M:m:n:P:p:s:S:tu:U:vxz:hH")) != -1)    switch( c ){    case 'b':      arg_bitfield_file = new char[strlen(optarg) + 1];#ifndef WINDOWS      if( !arg_bitfield_file ) return -1;#endif      strcpy(arg_bitfield_file, optarg);      break;    case 'i':                  // listen on ip XXXX      cfg_listen_ip = inet_addr(optarg);      break;    case 'p':			// listen on Port XXXX      cfg_listen_port = atoi(optarg);      break;    case 's':			// Save as FILE/DIR NAME      if( arg_save_as ) return -1;      arg_save_as = new char[strlen(optarg) + 1];#ifndef WINDOWS      if( !arg_save_as ) return -1;#endif      strcpy(arg_save_as,optarg);      break;    case 'e':			// Exit while complete      cfg_seed_hours = atoi(optarg);      break;    case 'E':			// target seed ratio      cfg_seed_ratio = atof(optarg);      break;    case 'c':			// Check exist only      arg_flg_check_only = 1;      break;    case 'C':      cfg_cache_size = atoi(optarg);      break;          case 'M':			// Max peers      cfg_max_peers = atoi(optarg);      if( cfg_max_peers > 1000 ||          cfg_max_peers < 20){        return -1;      }      break;          case 'm':			// Min peers      cfg_min_peers = atoi(optarg);      if( cfg_min_peers > 1000 ||          cfg_min_peers < 1){        return -1;      }      break;    case 'z':			// slice size      cfg_req_slice_size = atoi(optarg) * 1024;      if( cfg_req_slice_size < 1024 || cfg_req_slice_size > 128*1024 )        return -1;      break;    case 'n':                  // Which file download      arg_file_to_download = atoi(optarg);    break;    case 'f':			// force seed mode, skip sha1 check when startup.      arg_flg_force_seed_mode = 1;      break;          case 'D':      cfg_max_bandwidth_down = (int)(strtod(optarg, NULL) * 1024);      break;    case 'U':      cfg_max_bandwidth_up = (int)(strtod(optarg, NULL) * 1024);      break;    case 'P':      l = strlen(optarg);      if (l > MAX_PF_LEN) {printf("-P arg must be 8 or less characters\n"); exit(1);}      if (l == 1 && *optarg == '-') *arg_user_agent = (char) 0;      else strcpy(arg_user_agent,optarg);      break;     // BELLOW OPTIONS USED FOR CREATE TORRENT.    case 'u':			// Announce url      if( arg_announce ) return -1;      arg_announce = new char[strlen(optarg) + 1];      strcpy(arg_announce, optarg);      break;    case 't':			// make Torrent      arg_flg_make_torrent = 1;      break;    case 'l':			// piece Length (default 262144)      arg_piece_length = atoi(optarg);      if( arg_piece_length < 65536 ||          arg_piece_length > 1310720 ){        // warn message:        // piece length range is 65536 =>> 1310720        return -1;      }      break;     // ABOVE OPTIONS USED FOR CREATE TORRENT.    case 'x':      arg_flg_exam_only = 1;      break;    case 'S':			// CTCS server      if( arg_ctcs ) return -1;      arg_ctcs = new char[strlen(optarg) + 1];      if( !strchr(optarg, ':') ) return -1;      strcpy(arg_ctcs, optarg);      break;    case 'v':      arg_verbose = 1;      break;    case 'h':    case 'H':    default:      //unknow option.      return -1;    }  argc -= optind; argv += optind;  if( cfg_min_peers >= cfg_max_peers ) cfg_min_peers = cfg_max_peers - 1;  if( argc != 1 ) return -1;  arg_metainfo_file = new char[strlen(*argv) + 1];  arg_runtime_status_file = new char[strlen(*argv)+10];#ifndef WINDOWS  if( !arg_metainfo_file ) return -1;#endif  strcpy(arg_metainfo_file, *argv);  if (!arg_runtime_status_file) {    fprintf(stderr, "Cannot save runtime information.\n");  } else {    sprintf(arg_runtime_status_file, "%s.runtime", arg_metainfo_file);    arg_runtime_status_fd = open(arg_runtime_status_file, O_RDWR|O_CREAT|O_TRUNC, 0666);    if (arg_runtime_status_fd <= 0)      printf("\n*** open file %s fail!\n", arg_runtime_status_file);  }  delete []arg_runtime_status_file;  return 0;}void usage(){  fprintf(stderr,"%s	Original code Copyright: YuHong(992126018601033)",PACKAGE_STRING);  fprintf(stderr,"\nWARNING: THERE IS NO WARRANTY FOR CTorrent. USE AT YOUR OWN RISK!!!\n");  fprintf(stderr,"\nGeneric Options:\n");  fprintf(stderr,"-h/-H\t\tShow this message.\n");  fprintf(stderr,"-x\t\tDecode metainfo(torrent) file only, don't download.\n");  fprintf(stderr,"-c\t\tCheck exist only. don't download.\n");  fprintf(stderr,"-v\t\tVerbose output (for debugging).\n");  fprintf(stderr,"\nDownload Options:\n");  fprintf(stderr,"-e int\t\tExit while seed <int> hours later. (default 72 hours)\n");  fprintf(stderr,"-E num\t\tExit after seeding to <num> ratio (UL:DL).\n");  fprintf(stderr,"-i ip\t\tListen for connection on ip. (default all ip's)\n");  fprintf(stderr,"-p port\t\tListen port. (default 2706 -> 2106)\n");  fprintf(stderr,"-s save_as\tSave file/directory/metainfo as... \n");  fprintf(stderr,"-C cache_size\tCache size,unit MB. (default 16MB)\n");  fprintf(stderr,"-f\t\tForce seed mode. skip hash check at startup.\n");  fprintf(stderr,"-b bf_filename\tBit field filename. (use it carefully)\n");  fprintf(stderr,"-M max_peers\tMax peers count.\n");  fprintf(stderr,"-m min_peers\tMin peers count.\n");  fprintf(stderr,"-z slice_size\tDownload slice/block size, unit KB. (default 16, max 128).\n");  fprintf(stderr,"-n file_number\tWhich file download.\n");  fprintf(stderr,"-D rate\t\tMax bandwidth down (unit KB/s)\n");  fprintf(stderr,"-U rate\t\tMax bandwidth up (unit KB/s)\n");  fprintf(stderr,"-P peer_id\tSet Peer ID ["PEER_PFX"]\n");  fprintf(stderr,"-S host:port\tUse CTCS server\n");  fprintf(stderr,"\nMake metainfo(torrent) file Options:\n");  fprintf(stderr,"-t\t\tWith make torrent. must specify this option.\n");  fprintf(stderr,"-u url\t\tTracker's url.\n");  fprintf(stderr,"-l piece_len\tPiece length.(default 262144)\n");  fprintf(stderr,"\neg.\n");  fprintf(stderr,"hong> ctorrent -s new_filename -e 12 -C 32 -p 6881 eg.torrent\n\n");  fprintf(stderr,"home page: http://ctorrent.sourceforge.net/\n");  fprintf(stderr,"see also: http://www.rahul.net/dholmes/ctorrent/\n");  fprintf(stderr,"bug report: %s\n",PACKAGE_BUGREPORT);  fprintf(stderr,"original author: bsdi@sina.com\n\n");}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲桃色在线一区| 国产自产v一区二区三区c| 亚洲高清久久久| 国产一区二区三区国产| 欧美亚洲综合一区| 中文欧美字幕免费| 韩国三级在线一区| 欧美裸体一区二区三区| 亚洲色图欧美在线| 国产精品中文欧美| 欧美成人一区二区三区片免费| 亚洲欧美日韩国产成人精品影院| 激情综合色播激情啊| 欧美伊人久久久久久久久影院 | 久久久久国产精品厨房| 香蕉加勒比综合久久| 成人v精品蜜桃久久一区| 欧美成人女星排名| 日韩av在线发布| 欧美性大战xxxxx久久久| 1000精品久久久久久久久| 国产精品69毛片高清亚洲| 日韩精品一区在线观看| 男女男精品视频| 8v天堂国产在线一区二区| 亚洲你懂的在线视频| 成人精品视频.| 亚洲国产成人午夜在线一区| 国产精品一区二区三区99| 欧美成人a∨高清免费观看| 日韩黄色片在线观看| 欧美日韩免费观看一区二区三区 | 国产激情一区二区三区四区 | 色综合中文字幕国产| 国产精品视频麻豆| 成人av在线网| 1000精品久久久久久久久| 成人午夜视频在线| 国产精品卡一卡二| 99re66热这里只有精品3直播| 国产精品无人区| 99久久精品费精品国产一区二区| 欧美韩日一区二区三区四区| 成人少妇影院yyyy| 亚洲少妇30p| 欧美手机在线视频| 青青草原综合久久大伊人精品优势| 91麻豆精品国产91久久久久| 蜜桃久久av一区| 久久久久九九视频| 91香蕉视频污在线| 亚洲电影一级片| 日韩欧美一二三| 国产成人一区在线| 亚洲欧洲精品一区二区三区不卡| 色久综合一二码| 日韩精品乱码av一区二区| 日韩女优av电影在线观看| 国产精品 欧美精品| 亚洲精品精品亚洲| 91精品国产美女浴室洗澡无遮挡| 美女精品自拍一二三四| 国产色一区二区| 色偷偷成人一区二区三区91 | 国产在线国偷精品免费看| 国产精品天美传媒| 欧美区在线观看| 国产精品123区| 亚洲mv在线观看| 久久久精品tv| 欧美喷水一区二区| 成人高清在线视频| 青椒成人免费视频| 亚洲欧美日韩一区二区| 精品美女一区二区三区| 91日韩在线专区| 精品亚洲成a人| 亚洲国产精品欧美一二99| 久久亚洲春色中文字幕久久久| 日本韩国欧美一区| 粉嫩高潮美女一区二区三区| 亚洲午夜久久久久久久久久久| 精品久久久久久久久久久院品网| 色综合色狠狠综合色| 精品一区二区三区免费播放| 亚洲一区影音先锋| 亚洲国产成人在线| 欧美精品一区二区三区在线播放| 91年精品国产| 国产成人精品一区二区三区网站观看| 亚洲一区二区三区四区在线免费观看 | 欧美人伦禁忌dvd放荡欲情| 成人午夜av电影| 久久国产福利国产秒拍| 亚洲午夜一二三区视频| 中文字幕在线免费不卡| 久久日韩精品一区二区五区| 91精品婷婷国产综合久久| 欧美精品第1页| 在线观看一区不卡| 夫妻av一区二区| 国产一区二区三区四区五区美女 | 在线观看视频一区二区| 99vv1com这只有精品| 国产精品18久久久久久久久| 奇米影视一区二区三区| 亚洲gay无套男同| 亚洲va韩国va欧美va| 一片黄亚洲嫩模| 亚洲欧美精品午睡沙发| 综合激情成人伊人| 综合激情成人伊人| 亚洲精品网站在线观看| 日韩毛片在线免费观看| 亚洲手机成人高清视频| 亚洲欧洲av在线| 亚洲色图视频免费播放| 亚洲欧洲韩国日本视频| 亚洲丝袜制服诱惑| 亚洲一二三专区| 亚洲一区二区美女| 天天综合网 天天综合色| 亚洲一区二区黄色| 丝袜美腿亚洲综合| 免费精品视频最新在线| 精品综合久久久久久8888| 国产在线看一区| 成人美女视频在线看| 91视视频在线观看入口直接观看www | 午夜久久久久久| 免费国产亚洲视频| 经典三级一区二区| 成人午夜在线播放| 色综合中文字幕| 欧美色大人视频| 欧美成va人片在线观看| 久久精品一区二区三区av| 中文字幕一区二区视频| 一区二区免费在线| 日韩不卡手机在线v区| 激情国产一区二区| av亚洲精华国产精华精华| 欧美亚洲精品一区| 欧美成人aa大片| 国产精品福利电影一区二区三区四区| 亚洲精品乱码久久久久久黑人| 日本欧美一区二区三区乱码| 国产一区二区精品久久| 一本久久a久久免费精品不卡| 8x福利精品第一导航| 国产欧美一区二区在线观看| 亚洲激情中文1区| 精品在线一区二区三区| 99久久国产免费看| 日韩午夜激情电影| 日韩一区日韩二区| 日本成人在线看| aaa欧美色吧激情视频| 91精品久久久久久蜜臀| 国产精品久久精品日日| 三级一区在线视频先锋| 成人少妇影院yyyy| 日韩视频一区二区三区| 亚洲女同一区二区| 狠狠色丁香婷综合久久| 欧美自拍偷拍午夜视频| 久久久精品人体av艺术| 偷拍一区二区三区| 99久久免费精品高清特色大片| 欧美一区二区私人影院日本| 亚洲视频一二三| 国产精品一线二线三线| 欧美理论电影在线| 亚洲欧美日韩系列| 高清免费成人av| 欧美zozozo| 日韩在线播放一区二区| 色香蕉久久蜜桃| 国产精品久久久久久妇女6080| 久久国产剧场电影| 欧美高清激情brazzers| 亚洲欧美经典视频| 成人在线一区二区三区| 精品久久久久久久久久久久久久久久久| 伊人性伊人情综合网| av日韩在线网站| 国产区在线观看成人精品| 裸体在线国模精品偷拍| 欧美日韩国产经典色站一区二区三区| 国产精品不卡在线| 国产91精品免费| 国产亚洲综合色| 国产美女一区二区| 欧美精品一区男女天堂| 经典三级在线一区| 精品理论电影在线| 久久aⅴ国产欧美74aaa| 日韩久久一区二区| 风间由美中文字幕在线看视频国产欧美 | 国产suv一区二区三区88区|