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

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

?? kadcmain.c

?? p2p類源代碼 kadc協議官方源代碼
?? C
字號:
#include <pthread.h>#include <stdio.h>#include <string.h>#include <ctype.h>#include <time.h>#include <stdlib.h>#include <signal.h>#include <unistd.h>#include <int128.h>#include <rbt.h>#include <KadCalloc.h>#include <KadClog.h>#include <config.h>#include <queue.h>	/* required by net.h, sigh... */#include <net.h> /* only for domain2hip() */#include <KadCapi.h>static void CommandLoop(KadCcontext *pkcc);#ifdef OLD_STYLE_SIGNALvoid sighandler(int sig) {	close(0);	/* so that read(0) in KadC_getsn will fail */	signal(sig, SIG_IGN);}#else/* This thread waits for TERM and INT signals, and when   they are found, sets the shutdown_flag */void* sig_handler_th(void* arg) {	sigset_t signal_set;	int sig;	int done = 0;	/* we loop forever (and the main thread does not join() on this thread)	   because under GNU Pth signal blocking doesn't seem to work; a	   signal issued when no sigwait() is waiting for it always terminates	   the process... So we leave this thread to sigwait() till the process'	   exit.	 */	for(;;) {		/* wait for these signal (they are all already blocked) */		sigemptyset(&signal_set);		sigaddset(&signal_set, SIGTERM);		sigaddset(&signal_set, SIGINT);		sigwait(&signal_set, &sig);		/* here we've caught a signal! */		if(! done) {			close(0);			done = 1;#ifdef DEBUG			KadC_log("Signal %d caught, fd 0 closed\n", sig);#endif		}	}	return NULL;}#endifint main(int ac, char *av[]) {	KadCcontext kcc;	KadC_status kcs;#ifndef OLD_STYLE_SIGNAL	sigset_t signal_set;	pthread_t sig_thread;#endif	KadC_log("KadC - library version: %d.%d.%d\n",		KadC_version.major, KadC_version.minor, KadC_version.patchlevel);	if(ac < 2) {		KadC_log("usage: %s inifile.ini [leafmode]\n", av[0]);		return 1;	}#ifdef OLD_STYLE_SIGNAL	signal(SIGTERM, sighandler);	/* for the TERM signal (15, default for kill command)...  */	signal(SIGINT, sighandler); 	/* .. the INT signal... (Ctrl-C  hit on keyboard) */#else	/* block signals we'll wait for */	sigemptyset(&signal_set);	sigaddset(&signal_set, SIGTERM);	sigaddset(&signal_set, SIGINT);	pthread_sigmask(SIG_BLOCK, &signal_set,	NULL);	/* create the signal handling thread */	pthread_create(&sig_thread, NULL, sig_handler_th, NULL);#endif	kcc = KadC_start(av[1], ac > 2, 1);	if(kcc.s != KADC_OK) {		KadC_log("KadC_start(%s, %d) returned error %d:\n",			av[1], ac > 2, kcc.s);		KadC_log("%s %s", kcc.errmsg1, kcc.errmsg2);		return 2;	}	CommandLoop(&kcc); /* temporary */	KadC_log("Shutting down, please wait...\n");	kcs = KadC_stop(&kcc);	if(kcs != KADC_OK) {		KadC_log("KadC_stop(&kcc) returned error %d:\n", kcc.s);		KadC_log("%s %s", kcc.errmsg1, kcc.errmsg2);		return 3;	}	KadC_list_outstanding_mallocs(10);	return 0;}#define PARSIZE 16static void CommandLoop(KadCcontext *pkcc) {	for(;;) {		char line[4096];		int linelen;		char *p;		char *par[PARSIZE];		int ntok;		int i;		int fwstatus;		char ourhash[34] = {"#"};		unsigned long int extip;		int128sprintf(ourhash+1, KadC_getourhashID(pkcc));		extip = KadC_getextIP(pkcc);		fwstatus = KadC_getfwstatus(pkcc);		KadC_log("%4d/%4d%s ",			KadC_getnknodes(pkcc), KadC_getncontacts(pkcc),			(fwstatus>0 ? (fwstatus>1 ? ">" : "]") : "?"));		p = KadC_getsn(line, sizeof(line) -1);		if(p == NULL) /* EOF? */			break;		if((p = strrchr(line, '\n')) != NULL) *p = 0;		if((p = strrchr(line, '\r')) != NULL) *p = 0;		if(*line == 0)			continue; /* ignore empty lines */		linelen = strlen(line);		for(i=0; i<PARSIZE; i++)			par[i] = "";		for(i=0, ntok=0; i<linelen && ntok < PARSIZE; i++) {			int sepfound;			sepfound = isspace(line[i]);			if(i == 0 || (!sepfound && line[i-1] == '\0'))				par[ntok++] = &line[i];			if(sepfound)				line[i] = 0;		}		if(ntok == 0)			continue; /* ignore lines with no parameters */		if(strcmp(par[0], "s") == 0 || strcmp(par[0], "search") == 0) {			void *iter;			KadCdictionary *pkd;			char *index = par[1];			char *filter = par[2];			int nthreads = atoi(par[3]);			int duration = atoi(par[4]);			int maxhits = atoi(par[5]);			time_t starttime = time(NULL);			void *resdictrbt;			int nhits;			if(maxhits == 0)				maxhits = 100;	/* default to max 100 hits */			/* search index [filter [nthreads [duration]]] */			if(strcmp(index, "#") == 0)				index = ourhash;			resdictrbt = KadC_find(pkcc, index, filter, nthreads, maxhits, duration);			nhits = rbt_size(resdictrbt);			/* list each KadCdictionary returned in the rbt */			for(iter = rbt_begin(resdictrbt); iter != NULL; iter = rbt_next(resdictrbt, iter)) {				pkd = rbt_value(iter);				KadC_log("Found: ");				KadC_int128flog(stdout, KadCdictionary_gethash(pkd));				KadC_log("\n");				KadCdictionary_dump(pkd);				KadC_log("\n");			}			KadC_log("Search completed in %d seconds - %d hit%s returned\n",				time(NULL)-starttime, nhits, (nhits == 1 ? "" : "s"));			for(iter = rbt_begin(resdictrbt); iter != NULL; iter = rbt_begin(resdictrbt)) {				pkd = rbt_value(iter);				rbt_erase(resdictrbt, iter);				KadCdictionary_destroy(pkd);			}			rbt_destroy(resdictrbt);		} else if(strcmp(par[0], "p") == 0 || strcmp(par[0], "publish") == 0) {			/* publish {#[khash]|key} {#[vhash]|value} [meta-list [nthreads [nsecs]]] */			char *index = par[1];			char *value = par[2];			char *metalist = par[3];			int nthreads = atoi(par[4]);			int duration = atoi(par[5]);			int status;			if(nthreads < 1)				nthreads = 10;			if(duration < 1)				duration = 15;	/* default 15s of lookup */			if(strcmp(index, "#") == 0)				index = ourhash;			if(strcmp(value, "#") == 0)				value = ourhash;			status = KadC_republish(pkcc, index, value, metalist, nthreads, duration);			if(status == 1) {				KadC_log("Syntax error preparing search. Try: p key #hash [tagname=tagvalue[;...]]\n");			}		} else if(strcmp(par[0], "d") == 0 || strcmp(par[0], "dump") == 0) {			KadC_listkbuckets(pkcc);		} else if(strcmp(par[0], "q") == 0 || strcmp(par[0], "quit") == 0) {			break;		} else if(strcmp(par[0], "b") == 0 || strcmp(par[0], "blacklist") == 0) {			KadC_blacklist(pkcc, domain2hip(par[1]), atoi(par[2]), atoi(par[3]));			KadC_log("%s:%s is now blacklisted for %d seconds\n",				par[1], par[2], KadC_is_blacklisted(pkcc, domain2hip(par[1]), atoi(par[2])) );		} else if(strcmp(par[0], "u") == 0 || strcmp(par[0], "unblacklist") == 0) {			KadC_log("%s:%s was blacklisted for %d seconds, now isn't\n",				par[1], par[2], KadC_unblacklist(pkcc, domain2hip(par[1]), atoi(par[2])) );		} else if(strcmp(par[0], "z") == 0 || strcmp(par[0], "zeroize") == 0) {			/* clear k-bucket table */			KadC_emptykbuckets(pkcc);		} else {			#define getbyte(n,m) (((m)>>(8*(3-n))) & 0xff)			KadC_log("Our hash ID: %s, our ext IP: %d.%d.%d.%d\n",				ourhash+1,				getbyte(0, extip),getbyte(1, extip),getbyte(2, extip),getbyte(3, extip));			KadC_log("our UDP port: %u, our TCP port: %u\n",				KadC_getourUDPport(pkcc),				KadC_getourTCPport(pkcc));			KadC_log("Commands:\n");			KadC_log(" dump\n");			/*			KadC_log(" hello   peerIP peerUDPport\n");			KadC_log(" fwcheck peerIP peerUDPport\n");			 */			KadC_log(" s[earch]  {#[hash]|keyw} {<boolean_filter>|""} [nthreads [nsecs [maxhits]]]\n");			KadC_log(" p[ublish] {#[khash]|key} {#[vhash]|value} [name1=value1;[name2=value2...] [nthreads [nsecs]]]\n");			KadC_log(" q[uit]\n");		}	}}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美国产成人一区二区| 一区二区三区中文在线观看| 中文字幕在线观看不卡视频| 一区二区三区在线观看视频| 国产精品久久久久久久裸模| 亚洲精品国久久99热| 男人的天堂久久精品| 成人午夜视频在线观看| 91精品国产色综合久久不卡电影| 中文字幕巨乱亚洲| 亚洲成人在线观看视频| 国产成人综合亚洲网站| 欧美性视频一区二区三区| 久久久噜噜噜久噜久久综合| 亚洲在线视频网站| 国产精品77777| 欧美色手机在线观看| 久久综合九色综合97婷婷| 亚洲乱码国产乱码精品精可以看| 韩国女主播成人在线| 在线观看一区二区视频| 欧美日本韩国一区二区三区视频 | 国产精品综合视频| 欧美性xxxxxx少妇| 欧美国产日韩亚洲一区| 青青国产91久久久久久| 欧美丝袜丝交足nylons图片| 国产亚洲1区2区3区| 亚洲6080在线| 日本韩国一区二区三区视频| 国产日韩精品一区二区三区在线| 日本不卡免费在线视频| 在线观看日韩电影| 国产精品国产精品国产专区不蜜| 经典三级在线一区| 91精品国产美女浴室洗澡无遮挡| 亚洲精品乱码久久久久| 99久久99久久免费精品蜜臀| 日本一区二区不卡视频| 久久99九九99精品| 日韩欧美国产一区二区三区| 午夜激情一区二区三区| 色综合夜色一区| 亚洲欧美成人一区二区三区| www.亚洲人| 中文字幕亚洲一区二区va在线| 国产揄拍国内精品对白| 欧美日本国产视频| 日韩av午夜在线观看| 欧美一区二区三区成人| 另类的小说在线视频另类成人小视频在线 | 成人午夜在线免费| 久久久久九九视频| 国产精品中文欧美| 国产精品拍天天在线| av福利精品导航| 亚洲精品国产第一综合99久久| 91麻豆国产精品久久| 一区二区免费看| 欧美精品在线一区二区| 日本sm残虐另类| 日韩精品资源二区在线| 九九**精品视频免费播放| 久久综合狠狠综合| av电影天堂一区二区在线观看| 国产精品久久久久久久午夜片| 92国产精品观看| 一卡二卡欧美日韩| 欧美剧在线免费观看网站| 美女国产一区二区三区| 久久精品夜夜夜夜久久| 成人一区二区三区在线观看| 夜夜嗨av一区二区三区四季av| 欧美色区777第一页| 免费在线欧美视频| 国产日韩欧美电影| 在线一区二区视频| 久久精品国内一区二区三区| 中文字幕乱码久久午夜不卡| 色狠狠一区二区| 五月天中文字幕一区二区| 欧美精品一区二区三区蜜桃视频| 成人激情免费电影网址| 亚洲第一会所有码转帖| 亚洲精品一区二区三区香蕉| 国产高清视频一区| 偷拍与自拍一区| 国产三级一区二区| 欧美日韩极品在线观看一区| 国内成+人亚洲+欧美+综合在线| 中文字幕在线不卡一区二区三区| 91精选在线观看| 91蜜桃网址入口| 美脚の诱脚舐め脚责91| 亚洲理论在线观看| 日韩欧美国产三级| 欧美无人高清视频在线观看| 国产一区二区三区香蕉| 国产精品丝袜一区| 日韩免费视频一区二区| 一本高清dvd不卡在线观看| 青娱乐精品视频| 亚洲一区日韩精品中文字幕| 久久精品一区二区| 欧美疯狂性受xxxxx喷水图片| 成人不卡免费av| 六月丁香综合在线视频| 综合久久国产九一剧情麻豆| 欧美电影免费观看高清完整版在| 91福利在线导航| www.亚洲人| 国产精品99久久久久久似苏梦涵 | 6080国产精品一区二区| av电影天堂一区二区在线| 国产一本一道久久香蕉| 日本特黄久久久高潮| 一区二区三区欧美久久| 国产精品乱码一区二三区小蝌蚪| 日韩三级精品电影久久久| 欧美日韩国产大片| 97久久精品人人做人人爽50路| 日韩一区精品视频| 亚洲国产精品久久不卡毛片| 亚洲男人的天堂在线aⅴ视频| 国产欧美日韩精品一区| 精品国内二区三区| 欧美xxxxx牲另类人与| 日韩视频免费观看高清完整版 | 成人av网站大全| 国产成人亚洲综合a∨婷婷图片| 婷婷开心激情综合| 日日骚欧美日韩| 婷婷国产v国产偷v亚洲高清| 亚洲成人av一区二区| 婷婷久久综合九色国产成人| 偷拍与自拍一区| 蜜桃精品视频在线| 国产一区二区三区av电影 | 蜜桃久久av一区| 免费久久99精品国产| 欧美aaa在线| 丁香激情综合国产| 色婷婷综合久久久中文字幕| 91麻豆精品国产自产在线观看一区 | 亚洲高清不卡在线| 久久精品理论片| 色婷婷国产精品久久包臀| 欧美一区二区大片| 中文字幕综合网| 蜜桃传媒麻豆第一区在线观看| 不卡视频在线观看| 777精品伊人久久久久大香线蕉| 久久久久久久久久久久久久久99| 亚洲精品免费在线观看| 精品在线播放午夜| 91行情网站电视在线观看高清版| 欧美一区二区三区在线看| 国产精品三级视频| 麻豆91精品视频| 欧美亚洲图片小说| 中文字幕第一区综合| 日韩精品免费专区| 97精品久久久久中文字幕| 欧美一级精品在线| 亚洲美女精品一区| 国产成人一区在线| 欧美成人video| 亚洲成人av电影| 91蜜桃视频在线| 国产精品视频线看| 精品无人码麻豆乱码1区2区| 欧美日韩一级视频| 亚洲男人天堂av| 99视频精品全部免费在线| 精品成人在线观看| 日产精品久久久久久久性色| 97精品视频在线观看自产线路二| 久久色.com| 久久国产精品一区二区| 欧美日韩久久一区二区| 国产精品成人免费精品自在线观看| 久久精品久久久精品美女| 欧美日韩国产片| 亚洲午夜久久久久久久久久久| 99精品视频在线观看免费| 欧美极品少妇xxxxⅹ高跟鞋| 国产精品91xxx| 国产亚洲精品免费| 国产乱子伦视频一区二区三区| 欧美一区二区日韩| 免费一区二区视频| 日韩一二三四区| 毛片av一区二区| 欧美大片一区二区三区| 轻轻草成人在线| 精品福利一区二区三区免费视频| 久久不见久久见免费视频1| 日韩女同互慰一区二区| 激情国产一区二区| 久久亚洲一级片|