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

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

?? peer.c

?? LINUX下C寫的BT下載程序,很有幫助
?? C
字號:
#include <stdio.h>
#include <string.h>
#include <malloc.h>
#include "peer.h"
#include "message.h"
#include "bitfield.h"

extern Bitmap *bitmap;

// 指向當前與之進行通信的peer列表
Peer *peer_head = NULL;

int  initialize_peer(Peer *peer)
{
	if(peer == NULL)   return -1;

	peer->socket = -1;
	memset(peer->ip,0,16);
	peer->port = 0;
	memset(peer->id,0,21);
	peer->state = INITIAL;

	peer->in_buff      = NULL;
	peer->out_msg      = NULL;
	peer->out_msg_copy = NULL;

	peer->in_buff = (char *)malloc(MSG_SIZE);
	if(peer->in_buff == NULL)  goto OUT;
	memset(peer->in_buff,0,MSG_SIZE);
	peer->buff_len = 0;

	peer->out_msg = (char *)malloc(MSG_SIZE);
	if(peer->out_msg == NULL)  goto OUT;
	memset(peer->out_msg,0,MSG_SIZE);
	peer->msg_len  = 0;
	
	peer->out_msg_copy = (char *)malloc(MSG_SIZE);
	if(peer->out_msg_copy == NULL)  goto OUT;
	memset(peer->out_msg_copy,0,MSG_SIZE);
	peer->msg_copy_len   = 0;
	peer->msg_copy_index = 0;

	peer->am_choking      = 1;
	peer->am_interested   = 0;
	peer->peer_choking    = 1;
	peer->peer_interested = 0;
	
	peer->bitmap.bitfield        = NULL;
	peer->bitmap.bitfield_length = 0;
	peer->bitmap.valid_length    = 0;
	
	peer->Request_piece_head     = NULL;
	peer->Requested_piece_head   = NULL;
	
	peer->down_total = 0;
	peer->up_total   = 0;
	
	peer->start_timestamp     = 0;
	peer->recet_timestamp     = 0;
	
	peer->last_down_timestamp = 0;
	peer->last_up_timestamp   = 0;
	peer->down_count          = 0;
	peer->up_count            = 0;
	peer->down_rate           = 0.0;
	peer->up_rate             = 0.0;
	
	peer->next = (Peer *)0;
	return 0;

OUT:
	if(peer->in_buff != NULL)      free(peer->in_buff);
	if(peer->out_msg != NULL)      free(peer->out_msg);
	if(peer->out_msg_copy != NULL) free(peer->out_msg_copy);
	return -1;
}

Peer* add_peer_node()
{
	int  ret;
	Peer *node, *p;

	// 分配內存空間
	node = (Peer *)malloc(sizeof(Peer));
	if(node == NULL)  { 
		printf("%s:%d error\n",__FILE__,__LINE__); 
		return NULL;
	}

	// 進行初始化
	ret = initialize_peer(node);
	if(ret < 0) { 
		printf("%s:%d error\n",__FILE__,__LINE__);
		free(node);
		return NULL;
	}

	// 將node加入到peer鏈表中
	if(peer_head == NULL)  { peer_head = node; }
	else {
		p = peer_head;
		while(p->next != NULL)  p = p->next;
		p->next = node;
	}

	return node;
}

int del_peer_node(Peer *peer)
{
	Peer *p = peer_head, *q;

	if(peer == NULL)  return -1;

	while(p != NULL) {
		if( p == peer ) {
			if(p == peer_head)  peer_head = p->next;
			else  q->next = p->next;
			free_peer_node(p);  // 可能存在問題
			return 0;
		} else {
			q = p;
			p = p->next;
		}
	}

	return -1;
}

// 撤消當前請求隊列
int cancel_request_list(Peer *node)
{
	Request_piece  *p;

	p = node->Request_piece_head;
	while(p != NULL) {
		node->Request_piece_head = node->Request_piece_head->next;
		free(p);
		p = node->Request_piece_head;
	}

	return 0;
}

// 撤消當前被請求隊列
int cancel_requested_list(Peer *node)
{
	Request_piece  *p;
	
	p = node->Requested_piece_head;
	while(p != NULL) {
		node->Requested_piece_head = node->Requested_piece_head->next;
		free(p);
		p = node->Requested_piece_head;
	}
	
	return 0;
}

void  free_peer_node(Peer *node)
{
	if(node == NULL)  return;
	if(node->bitmap.bitfield != NULL) {
		free(node->bitmap.bitfield);
		node->bitmap.bitfield = NULL;
	}
	if(node->in_buff != NULL) {
		free(node->in_buff); 
		node->in_buff = NULL;
	}
	if(node->out_msg != NULL) {
		free(node->out_msg);
		node->out_msg = NULL;
	}
	if(node->out_msg_copy != NULL) {
		free(node->out_msg_copy);
		node->out_msg_copy = NULL;
	}

	cancel_request_list(node);
	cancel_requested_list(node);

	// 釋放完peer成員的內存后,再釋放peer所占的內存
	free(node);
}

void  release_memory_in_peer()
{
	Peer *p;

	if(peer_head == NULL)  return;

	p = peer_head;
	while(p != NULL) {
		peer_head = peer_head->next;
		free_peer_node(p);
		p = peer_head;
	}
}

void print_peers_data()
{
	Peer *p    = peer_head;
	int  index = 0;

	while(p != NULL) {
		printf("peer: %d  down_rate: %.2f \n", index, p->down_rate);

		index++;
		p = p->next;
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
不卡欧美aaaaa| 国产在线国偷精品产拍免费yy| 国产高清久久久久| 一级日本不卡的影视| 91精品国产入口| 国产精品888| 亚洲18影院在线观看| 久久综合成人精品亚洲另类欧美| 丁香婷婷深情五月亚洲| 偷拍一区二区三区四区| 国产精品免费久久久久| 欧美一区二区三区免费大片 | 久久精品男人天堂av| 91九色02白丝porn| 国产精品一区二区久久不卡| 国产盗摄精品一区二区三区在线| 国产电影精品久久禁18| 91亚洲国产成人精品一区二三| 美女视频第一区二区三区免费观看网站| 亚洲婷婷综合色高清在线| 一级女性全黄久久生活片免费| 精品国产伦一区二区三区免费 | 中文字幕永久在线不卡| 欧美日韩mp4| 91成人国产精品| 9191精品国产综合久久久久久 | 亚洲国产成人精品视频| 国产精品麻豆视频| 夜夜嗨av一区二区三区| 青娱乐精品在线视频| 五月激情六月综合| 粉嫩欧美一区二区三区高清影视| av在线播放成人| 亚洲国产成人av| 九色综合狠狠综合久久| 免费看欧美女人艹b| 国产69精品久久777的优势| av亚洲精华国产精华| 在线不卡a资源高清| 欧美精品亚洲一区二区在线播放| 26uuu精品一区二区在线观看| 亚洲天堂免费看| 精品一区二区免费视频| 在线观看网站黄不卡| 欧美午夜片在线看| 欧美色爱综合网| 91精品国产aⅴ一区二区| 国产精品视频yy9299一区| 日韩高清在线观看| 免费人成精品欧美精品| av电影天堂一区二区在线观看| 欧美一区二区三区免费观看视频 | 中文字幕一区二区三区不卡| 一区二区中文视频| 久久精品国产99国产| 亚洲高清在线视频| 成人一级片在线观看| 99视频一区二区| 久久男人中文字幕资源站| 国产免费观看久久| 亚洲黄色录像片| 亚洲成a人片综合在线| 蜜臂av日日欢夜夜爽一区| 欧美日韩一区二区三区在线看| 国产精品美女久久久久av爽李琼 | 久久久国际精品| 蜜桃久久久久久| 欧美电影一区二区三区| 一区二区三区欧美激情| 91久久久免费一区二区| 亚洲人成7777| 裸体歌舞表演一区二区| 91麻豆精品91久久久久同性| 亚洲一区二区三区小说| 精品在线免费观看| 精品免费国产二区三区| 亚洲激情一二三区| 色综合视频在线观看| 欧美mv日韩mv国产网站app| 丝瓜av网站精品一区二区| 风间由美一区二区三区在线观看 | 国产一区二区成人久久免费影院| 欧美电影在线免费观看| 秋霞电影一区二区| 欧美大片一区二区三区| 亚洲精品视频观看| 欧美在线制服丝袜| 日本亚洲欧美天堂免费| 精品国产免费久久| 精品一区二区综合| 欧美国产一区二区| 久久国产精品72免费观看| 日韩欧美精品在线视频| 国产成人精品免费视频网站| 国产精品福利一区二区| 国产自产视频一区二区三区| 欧美色电影在线| 亚洲国产一二三| 日韩三级av在线播放| 亚洲最大的成人av| 91精品国产色综合久久不卡蜜臀 | 国产传媒日韩欧美成人| 国产精品美女久久久久高潮| 欧美在线观看视频一区二区三区 | 久久综合国产精品| 91亚洲精品乱码久久久久久蜜桃| 亚洲综合色噜噜狠狠| 日韩三级免费观看| 99久久99久久久精品齐齐| 久久久久久一二三区| 91猫先生在线| 精品在线视频一区| 亚洲综合偷拍欧美一区色| 欧美电影精品一区二区| 91同城在线观看| 极品少妇xxxx偷拍精品少妇| 欧美人与z0zoxxxx视频| 丝瓜av网站精品一区二区| 日韩精品一区二区三区三区免费| 国产呦精品一区二区三区网站| 亚洲欧洲精品一区二区精品久久久| 欧美日韩国产另类不卡| 成人午夜激情影院| 蜜臀av性久久久久av蜜臀妖精| 亚洲欧洲另类国产综合| 久久这里只精品最新地址| 欧美日韩一区 二区 三区 久久精品| 麻豆国产精品777777在线| 一区二区三区欧美亚洲| 欧美国产精品中文字幕| 在线不卡一区二区| 91视视频在线观看入口直接观看www | 日韩av一区二区三区| 在线观看区一区二| 成人激情小说乱人伦| 美日韩黄色大片| 一区二区三区波多野结衣在线观看| 欧美xfplay| 正在播放亚洲一区| 欧美日韩精品免费观看视频| 99麻豆久久久国产精品免费优播| 日本不卡123| 亚洲电影视频在线| 亚洲欧美激情一区二区| 国产精品传媒视频| 精品国产人成亚洲区| 91精品欧美久久久久久动漫| 91国偷自产一区二区三区观看| 粉嫩av亚洲一区二区图片| 老司机午夜精品99久久| 丝袜美腿亚洲一区二区图片| 一区二区三区四区在线播放| 国产精品传媒在线| 1024亚洲合集| 18涩涩午夜精品.www| 亚洲欧洲日产国产综合网| 亚洲国产成人私人影院tom| 久久久久国产精品厨房| 国产无遮挡一区二区三区毛片日本| 日韩精品专区在线| 亚洲精品在线网站| 久久久综合激的五月天| 久久综合九色综合97_久久久| 欧美大白屁股肥臀xxxxxx| 日韩欧美久久久| 久久久99久久| 中文字幕一区二区三区在线不卡 | 国产99久久久久| 成人美女视频在线观看18| 成人av免费在线观看| 91性感美女视频| 欧美精品三级日韩久久| 精品少妇一区二区三区在线视频| 欧美精品一区二区高清在线观看| 久久久久久9999| 一区二区三区资源| 亚洲国产精品久久人人爱蜜臀 | 欧美va日韩va| 国产精品色在线观看| 亚洲图片自拍偷拍| 毛片一区二区三区| 国产成人精品三级| 欧美亚洲一区二区在线观看| 538prom精品视频线放| 国产亚洲成年网址在线观看| 亚洲欧美另类久久久精品2019| 肉肉av福利一精品导航| 成人免费精品视频| 激情图区综合网| 国内久久婷婷综合| 91看片淫黄大片一级在线观看| 91久久精品一区二区二区| 欧美一卡二卡三卡| 18欧美乱大交hd1984| 日本强好片久久久久久aaa| 成人午夜碰碰视频| 欧美日韩mp4| 中文字幕一区二区三区蜜月| 老司机免费视频一区二区| 91丨九色丨国产丨porny|