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

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

?? peer.c

?? linux下BT軟件的源碼。源代碼可以使用命令“make”進行編譯
?? 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;

	// 分配內(nèi)存空間
	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成員的內(nèi)存后,再釋放peer所占的內(nèi)存
	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一区二区三区免费野_久草精品视频
亚洲国产高清不卡| 国模少妇一区二区三区| 免费在线视频一区| 91免费看`日韩一区二区| 欧美一区二区三区免费观看视频| 欧美激情一区三区| 蜜臀91精品一区二区三区| 色婷婷久久久久swag精品| 久久久久九九视频| 成人综合在线视频| 欧美一级欧美三级| 亚洲综合激情小说| 99re热这里只有精品免费视频| 日韩欧美123| 亚洲超丰满肉感bbw| 99久久精品情趣| 中文字幕高清不卡| 国产精选一区二区三区| 91.麻豆视频| 亚洲成a人v欧美综合天堂下载| 99re66热这里只有精品3直播 | 香蕉av福利精品导航| 成人午夜视频在线| 久久久久久久精| 国产专区欧美精品| 精品成人a区在线观看| 日本不卡一区二区三区| 在线观看日韩电影| 亚洲女与黑人做爰| 9久草视频在线视频精品| 国产日韩欧美电影| 国产精品亚洲人在线观看| 久久综合狠狠综合久久激情| 另类小说色综合网站| 666欧美在线视频| 日本不卡123| 日韩欧美一区二区久久婷婷| 蜜臀av亚洲一区中文字幕| 欧美一区二区三区在线| 麻豆国产欧美一区二区三区| 欧美一卡二卡在线| 久久国产精品一区二区| 久久午夜电影网| 成人午夜激情在线| 亚洲私人影院在线观看| 色94色欧美sute亚洲13| 亚洲va欧美va人人爽午夜| 欧美丰满高潮xxxx喷水动漫| 青青草国产成人av片免费| 欧美草草影院在线视频| 91豆麻精品91久久久久久| 亚洲国产成人porn| 日韩色在线观看| 国产一区激情在线| 亚洲欧洲精品一区二区精品久久久| 成人福利视频网站| 亚洲黄一区二区三区| 欧美日韩精品高清| 国产在线日韩欧美| 亚洲免费看黄网站| 91麻豆精品国产自产在线观看一区| 欧美a级一区二区| 亚洲国产高清不卡| 欧美人狂配大交3d怪物一区 | 欧美日韩卡一卡二| 经典三级在线一区| 日韩理论片网站| 宅男在线国产精品| 福利电影一区二区| 亚洲成年人网站在线观看| 亚洲精品在线免费观看视频| 不卡的av电影| 麻豆91免费看| 国产精品久久久久影院亚瑟 | 五月婷婷久久综合| 欧美激情一区三区| 欧美日韩视频专区在线播放| 国产精品69久久久久水密桃 | 久久久夜色精品亚洲| 91热门视频在线观看| 精品一区二区三区影院在线午夜| 最新中文字幕一区二区三区| 精品美女一区二区| 欧美性三三影院| 成人av资源站| 激情综合五月天| 日韩精品一卡二卡三卡四卡无卡| 欧美极品少妇xxxxⅹ高跟鞋| 日韩一区二区在线观看| av在线播放不卡| 国产精品99久久久久久宅男| 日韩—二三区免费观看av| 亚洲日本中文字幕区| 久久久久久久综合日本| 4438x成人网最大色成网站| 色综合天天综合网天天狠天天| 精品无人码麻豆乱码1区2区| 亚洲国产成人高清精品| 亚洲美女免费在线| 日本一二三不卡| 日韩欧美色综合网站| 欧美日韩亚洲不卡| 欧美色精品在线视频| 91同城在线观看| 成人毛片在线观看| 国产69精品久久99不卡| 国精产品一区一区三区mba视频 | 欧美色图片你懂的| 色婷婷精品久久二区二区蜜臂av | 一区二区三区蜜桃网| 日韩一区欧美小说| 国产精品乱人伦一区二区| 石原莉奈在线亚洲二区| 伊人一区二区三区| 亚洲欧美日韩人成在线播放| 成人免费一区二区三区在线观看| 国产亚洲一区二区三区在线观看 | 精品国产精品网麻豆系列| 91精品在线麻豆| 9191成人精品久久| 欧美一区午夜视频在线观看| 欧美一区二区三区播放老司机| 欧美日韩色综合| 制服丝袜亚洲色图| 精品国产电影一区二区| 2021久久国产精品不只是精品| 欧美mv日韩mv国产网站| 久久精品一级爱片| 国产日韩欧美精品电影三级在线| 日本一区二区不卡视频| 一区在线观看视频| 亚洲国产乱码最新视频 | 精品国产乱码久久| 国产日韩欧美不卡| 日韩毛片精品高清免费| 亚洲一区二区精品视频| 日韩高清一级片| 久久99国产精品麻豆| 成人综合日日夜夜| 一本色道综合亚洲| 在线不卡欧美精品一区二区三区| 日韩三级伦理片妻子的秘密按摩| 精品国产区一区| 国产欧美日韩精品一区| 亚洲欧美韩国综合色| 日本欧美一区二区| 成人免费视频播放| 在线观看视频一区二区| 日韩欧美国产成人一区二区| 欧美国产视频在线| 亚洲gay无套男同| 制服丝袜亚洲播放| 国产日产精品一区| 亚洲国产一区视频| 国产成人在线视频网站| 欧美中文字幕一二三区视频| 精品乱人伦一区二区三区| 亚洲天堂2014| 精品亚洲欧美一区| 在线欧美小视频| 国产日韩欧美a| 视频一区二区三区中文字幕| 成人av网在线| 7777精品伊人久久久大香线蕉超级流畅| 欧美va亚洲va在线观看蝴蝶网| 亚洲欧美在线视频| 国产一二精品视频| 欧美日韩精品欧美日韩精品一 | 色婷婷综合久久久久中文 | 婷婷一区二区三区| 成人在线综合网| 精品嫩草影院久久| 亚洲成av人片一区二区梦乃| www.欧美日韩国产在线| 精品少妇一区二区三区在线播放 | 国产99精品视频| 日韩一区二区三区免费观看| 亚洲欧美日韩国产另类专区| 国产乱码字幕精品高清av| 欧美一区二区三区喷汁尤物| 一区二区三国产精华液| 成人教育av在线| 久久色成人在线| 美腿丝袜亚洲三区| 欧美巨大另类极品videosbest| 亚洲欧美另类小说视频| 盗摄精品av一区二区三区| 亚洲精品在线网站| 久久99久久精品欧美| 91精品国产综合久久精品性色 | 久久久久久一二三区| 热久久久久久久| 91麻豆精品国产91久久久久久久久| 亚洲男同性视频| 91亚洲永久精品| 一区二区三区国产豹纹内裤在线 | 欧美在线一区二区| 一区二区视频在线看| 91美女精品福利| 亚洲男人的天堂一区二区|