Linux平臺下基於BitTorrent應用層協議的下載軟體開發--Main函式模組(main.c)
阿新 • • 發佈:2019-01-11
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <malloc.h> #include "data.h" #include "tracker.h" #include "bitfield.h" #include "torrent.h" #include "parse_metafile.h" #include "signal_hander.h" #include "policy.h" #include "log.h" // #define DEBUG int main(int argc, char *argv[]) { int ret; if(argc != 2) { printf("usage:%s metafile\n",argv[0]); exit(-1); } // 設定訊號處理函式 ret = set_signal_hander(); if(ret != 0) { printf("%s:%d error\n",__FILE__,__LINE__); return -1; } // 解析種子檔案 ret = parse_metafile(argv[1]); if(ret != 0) { printf("%s:%d error\n",__FILE__,__LINE__); return -1; } // 初始化非阻塞peer init_unchoke_peers(); // 建立用於儲存下載資料的檔案 ret = create_files(); if(ret != 0) { printf("%s:%d error\n",__FILE__,__LINE__); return -1; } // 建立點陣圖 ret = create_bitfield(); if(ret != 0) { printf("%s:%d error\n",__FILE__,__LINE__); return -1; } // 建立緩衝區 ret = create_btcache(); if(ret != 0) { printf("%s:%d error\n",__FILE__,__LINE__); return -1; } // 負責與所有Peer收發資料、交換訊息 download_upload_with_peers(); // 做一些清理工作,主要是釋放動態分配的記憶體 do_clear_work(); return 0; }