freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

bt軟件下載開發(fā)完整版-01-文庫吧資料

2024-08-29 08:16本頁面
  

【正文】 num = 0。 int slice_count = piece_length / (16*1024)。 } ? int is_a_plete_piece(int index, int *sequence) 功能:下載完一個 slice 后,檢查是否該 slice 為 piece 的最后一個 shice。 p = pnext。 paccess_count = 0。 pis_full = 0。 pin_use = 0。 pbegin = 1。 } if(p != NULL) { p = q。 // 找到一個空閑的 piece count++。 pread_write==0) used_count += paccess_count。 } if(pin_use==1 amp。 while(p != NULL) { 457 項目實踐: BT 下載軟件的開發(fā) 第章 13 if(count % slice_count == 0) { used_count = 0。 int slice_count = piece_length / (16*1024)。 int count = 0。函數實現代碼如下: int release_read_btcache_node(int base_count) { Btcache *p = btcache_head。 } return 0。 } index_count++。 (pis_writed == 0) ) { full_count++。 (pis_full == 1) amp。 (pread_write == 1) amp。 } if( (pin_use == 1) amp。 while(p != NULL) { if(index_count % slice_count == 0) { full_count = 0。 int full_count = 0。 int slice_count = piece_length / (16*1024)。 } ? int write_btcache_to_harddisk(Peer *peer) 功能:將整個緩沖區(qū)中已下載的 piece 寫入硬盤,這樣可以釋放緩沖區(qū)。 node_ptr = node_ptrnext。 begin += 16*1024。 node_ptris_writed = 0。 node_ptrread_write = 0。 if(ret 0) return 1。 node_ptrlength = length。 while(slice_count 0) { node_ptrindex = index。 int ret。 int length = 16*1024。函數實現的代碼如下: int read_piece_from_harddisk(Btcache *p, int index) { Btcache *node_ptr = p。 return 0。 // 打印出提示信息 printf(%%%%%% Total piece download:%d %%%%%%\n,download_piece_num)。 } } // 更新 download_piece_num,每下載 10個 piece就將位圖寫入文件 download_piece_num++。 i++) { if(have_piece_index[i] == 1) { have_piece_index[i] = index_copy。 // 保存 piece的 index,準備給所有的 peer 發(fā)送 have消息 for(i = 0。 } // 當前處于終端模式,則在 peer鏈表中刪除所有對該 piece 的請求 if(end_mode == 1) delete_request_end_mode(index_copy)。 node_ptr = node_ptrnext。 node_ptris_writed = 0。 node_ptrread_write = 1。 node_ptrlength = 1。 } node_ptrindex = 1。 } req_q = req_p。 req_p = req_q = NULL。 else req_qnext = req_pnext。amp。 Request_piece *req_q = peerRequest_piece_head。 while(slice_count 0) { write_btcache_node_to_harddisk(node_ptr)。 } // 將該 piece的所有 slice寫入文件 node_ptr = p。 if(ret != 0) { printf(piece hash is wrong\n)。 i++) piece_hash2[i] = pieces[index+i]。 // 存放 piece的 index for(i = 0。 // 從種子文件中獲取該 piece的正確的 hash值 index = pindex * 20。 } SHA1Final(piece_hash1,amp。 slice_count。 node_ptr!=NULL) { SHA1Update(amp。 while(slice_count0 amp。 SHA1Init(amp。 } p = node_ptr。 while(i sequence) { node_ptr = node_ptrnext。 if(peer==NULL) return 1。 int slice_count = piece_length / (16*1024)。 參數: sequence 是存放 piece 的第一個 slice 的 Btcache 結點編號,該值的范圍為 0~ 1023 中16 的整數值函數實現代碼如下所示: int write_piece_to_harddisk(int sequence,Peer *peer) { Btcache *node_ptr = btcache_head, *p。 具體代碼請參考本書所附源代碼。 } 454 Linux 系統(tǒng) 下的 C 編程 ? int read_slice_from_harddisk(Btcache *node) 功能:從硬盤讀一個 slice 的數據,存放到緩沖區(qū)中,在 peer 需要時發(fā)送給 peer。 p = pnext。 // 執(zhí)行到此處說明所有數據已正確寫入文件中,退出 while循環(huán) } else { // 待寫入的數據不應寫入當前文件 line_position = line_position plength。 p = pnext。 left = left plength。 write(fds[i],nodebuff+offset,plength)。// 寫入剩余要寫的字節(jié)數 left = 0。 // 獲取下一個文件描述符 while(left 0) { if(plength = left) { // 當 前文件的長度大于等于要寫的字節(jié)數 lseek(fds[i],0,SEEK_SET)。 // 還未寫的字節(jié)數 p = pnext。 offset = plength line_position。 // 剩余要寫的字節(jié)數 lseek(fds[i],line_position,SEEK_SET)。 (line_position+nodelength = plength) ) { // 如果待寫入的數據跨越了兩個或兩個以上的文件 int offset = 0。 // 寫入數據完畢,退出 while循環(huán) } else if((line_position plength) amp。 write(fds[i],nodebuff,nodelength)。amp。 i = 0。 return 1。 return 0。 // 如果下載的是單個文件 if( is_multi_files() == 0 ) { lseek(*fds,line_position,SEEK_SET)。 if((node == NULL) || (fds == NULL)) return 1。 Files *p。 } ? int write_btcache_node_to_harddisk(Btcache *node) 功能:判斷一個 Btcache 結 點(即一個 slice)的數據要寫到哪個文件以及具體位置,并寫入。 i++。 return 1。 } ret = write(fds[i],buff,1)。 if(ret 0) { printf(%s:%d error,__FILE__,__LINE__)。 return 1。 while(p != NULL) { fds[i] = open(ppath,O_RDWR|O_CREAT,0777)。 } } Files *p = files_head。 if(ret 0) { printf(%s:%d error,__FILE__,__LINE__)。 return 1。 if(ret 0) { // 改變目錄失敗,說明該目錄還未創(chuàng)建 ret = mkdir(file_name,0777)。 return 1。 } ret = write(*fds,buff,1)。 if(ret 0) { printf(%s:%d error,__FILE__,__LINE__)。 return 1。 if( is_multi_files() == 0 ) { // 待下載的為單文件 *fds = open(file_name,O_RDWR|O_CREAT,0777)。 fds = (int *)malloc(fds_len * sizeof(int))。 fds_len = get_files_count()。函數實現代碼如下: int create_files() { int ret, i。 }
點擊復制文檔內容
高考資料相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1