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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? kadccbmain.c

?? p2p類源代碼 kadc協(xié)議官方源代碼
?? C
字號(hào):
/** * A modified version of KadCmain.c that uses * for searches the callback interface to report * the found matches immediately */#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 int hit_to_log_cb(KadCdictionary *pkd, void *context) {	KadC_log("Found: (context %s)", context);	KadC_int128flog(stdout, KadCdictionary_gethash(pkd));	KadC_log("\n");	KadCdictionary_dump(pkd);	KadC_log("\n");	return 0;		}static 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;			{				KadCfind_params fpar;				KadCfind_init(&fpar);				fpar.threads = nthreads;				fpar.max_hits = maxhits;				fpar.duration = duration;				fpar.hit_callback = hit_to_log_cb;				fpar.hit_callback_context = "Test";#ifdef SEARCH_COLLECT				fpar.hit_callback_mode = KADC_COLLECT_HITS;#endif				resdictrbt = KadC_find2(pkcc, index, &fpar);			}#ifdef SEARCH_COLLECT			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);#endif		} 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");		}	}}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99精品国产视频| 国产不卡视频一区二区三区| 国产精品毛片久久久久久久| 欧美大片一区二区| 日韩精品一区二区三区视频播放| 91.麻豆视频| 91精品中文字幕一区二区三区| 欧美视频日韩视频在线观看| 欧美在线999| 欧美精品99久久久**| 91麻豆精品国产91久久久久| 日韩欧美国产电影| www成人在线观看| 国产精品久久久久婷婷| 亚洲欧美日韩国产手机在线| 亚洲欧美另类久久久精品2019| 樱花影视一区二区| 亚洲va欧美va人人爽午夜| 视频一区中文字幕国产| 久久99日本精品| 国产福利精品一区| 91免费看片在线观看| 欧美精品自拍偷拍| 久久久久青草大香线综合精品| 国产精品亲子乱子伦xxxx裸| 一区二区理论电影在线观看| 婷婷成人综合网| 国产jizzjizz一区二区| 欧美主播一区二区三区美女| 日韩欧美久久久| 国产精品不卡一区二区三区| 日韩在线一区二区| 菠萝蜜视频在线观看一区| 欧美日韩和欧美的一区二区| 久久综合久久鬼色| 亚洲电影一级黄| 国产91丝袜在线观看| 欧美综合亚洲图片综合区| 久久蜜桃av一区精品变态类天堂 | 免费成人美女在线观看.| 国产伦精品一区二区三区在线观看 | 亚洲色图一区二区| 日本在线不卡一区| 成人性生交大合| 日韩你懂的在线播放| 亚洲视频免费观看| 国产高清精品久久久久| 欧美日本在线观看| 综合久久久久综合| 国产精品影视网| 欧美久久久影院| 一级做a爱片久久| 粉嫩aⅴ一区二区三区四区五区 | 亚洲丝袜美腿综合| 久久99久久99精品免视看婷婷| 91麻豆国产福利精品| 久久亚洲二区三区| 欧美aⅴ一区二区三区视频| 成人精品小蝌蚪| 久久美女高清视频| 精品中文字幕一区二区小辣椒| 欧美午夜视频网站| 亚洲另类在线一区| 91婷婷韩国欧美一区二区| 国产午夜精品福利| 国产一区视频在线看| 日韩免费高清电影| 精品系列免费在线观看| 欧美日韩国产成人在线免费| 一区二区激情视频| 欧美影院精品一区| 亚洲成人免费视| 欧美视频一区在线| 天堂影院一区二区| 欧美军同video69gay| 三级一区在线视频先锋 | 亚洲欧美自拍偷拍色图| 国产精品中文字幕欧美| 国产校园另类小说区| 国产伦精品一区二区三区免费| 日韩一区二区三区视频| 日本中文字幕不卡| 久久网站热最新地址| 国产一区久久久| 日本一区二区三区四区在线视频 | 亚洲美女屁股眼交3| 色综合久久综合网97色综合 | 久久这里都是精品| 国v精品久久久网| 亚洲男女一区二区三区| 欧美中文字幕一区二区三区| 五月婷婷久久综合| 欧美r级在线观看| 国产成人av电影在线| 亚洲日本va午夜在线电影| 91久久精品国产91性色tv| 亚洲国产精品一区二区www| 欧美一区二区日韩一区二区| 久久国产精品区| 国产精品二区一区二区aⅴ污介绍| 91麻豆免费视频| 蜜臀久久99精品久久久久宅男 | 午夜国产精品一区| wwwwww.欧美系列| 99久久久久久| 日韩有码一区二区三区| 久久精品亚洲乱码伦伦中文| 色综合网站在线| 欧美a级一区二区| 成人欧美一区二区三区| 欧美精品日韩一区| 波多野结衣中文字幕一区 | 性久久久久久久久| 国产亚洲精品免费| 欧美最猛性xxxxx直播| 国产精品综合在线视频| 亚洲高清免费一级二级三级| 26uuu另类欧美| 欧美福利一区二区| 99久久777色| 国产盗摄一区二区| 三级久久三级久久| 亚洲精品中文在线观看| 精品国产91九色蝌蚪| 欧美亚洲免费在线一区| 国产高清精品久久久久| 日韩黄色免费电影| 亚洲激情网站免费观看| 国产三区在线成人av| 91精品国产黑色紧身裤美女| 91影院在线免费观看| 国产精品一区在线| 欧美bbbbb| 丝袜诱惑制服诱惑色一区在线观看| 欧美激情一区三区| 久久久久高清精品| 日韩午夜激情av| 欧美亚洲国产一卡| 91视频你懂的| 91在线云播放| av网站一区二区三区| 国产麻豆视频精品| 国产一区二区91| 国产高清精品网站| 国产精品影视在线| 国产成人精品免费一区二区| 狠狠久久亚洲欧美| 国产一区二区在线免费观看| 日本aⅴ免费视频一区二区三区| 亚洲人成伊人成综合网小说| 国产精品色婷婷久久58| 国产精品精品国产色婷婷| 国产精品久久久久久久久免费桃花| 国产欧美视频在线观看| 中国色在线观看另类| 国产精品久久久久久久久图文区 | 天天操天天综合网| 午夜精品久久久久久久久| 午夜久久久久久| 日韩国产在线一| 青青草国产成人av片免费| 久久99热这里只有精品| 国产伦精品一区二区三区视频青涩 | 美国精品在线观看| 国产乱子轮精品视频| 不卡一区二区中文字幕| 欧美在线观看视频在线| 欧美日韩国产综合一区二区三区| 欧美精品一二三区| 日韩欧美国产一区二区三区 | 91精品国产黑色紧身裤美女| 日韩视频免费观看高清完整版在线观看| 欧美一区二区精品| 久久久一区二区| 一区二区三区中文在线观看| 一二三区精品视频| 美日韩一级片在线观看| 国产激情91久久精品导航 | 国产a精品视频| 91国产免费观看| 精品欧美一区二区在线观看| 国产欧美日韩视频在线观看| 亚洲女厕所小便bbb| 免费成人在线观看视频| av电影在线观看一区| 欧美高清视频不卡网| 久久天堂av综合合色蜜桃网| 国产精品激情偷乱一区二区∴| 一区二区国产视频| 国产不卡免费视频| 欧美精品黑人性xxxx| 国产农村妇女毛片精品久久麻豆 | 久久国产精品99精品国产| youjizz国产精品| 欧美喷水一区二区| 国产精品美女一区二区三区| 日韩影院精彩在线| 91美女在线看| 国产欧美精品区一区二区三区| 无码av免费一区二区三区试看|