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

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

?? gnutella.cpp

?? peercast的源碼
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
				Host sh = servMgr->serverHost;				if (sh.isValid())
				{					if ((servMgr->getFirewall() != ServMgr::FW_ON) && (!servMgr->pubInFull()))					{						GnuPacket pong;						pong.initPong(sh,true,in);						if (serv->outputPacket(pong,true))							LOG_NETWORK("pong out");					}					ret = R_BROADCAST;			
				}
			}			break;		case GNU_FUNC_PONG: // pong			{				{					int ip,port,cnt,total;					port = data.readShort();					ip = data.readLong();					cnt = data.readLong();					total = data.readLong();					ip = SWAP4(ip);					Host h;					h.ip = ip;					h.port = port;					char sIP[64],rIP[64];					h.toStr(sIP);					remoteHost.toStr(rIP);										LOG_NETWORK("pong: %s via %s : %02x%02x%02x%02x",sIP,ip,rIP,in.id.id[0],in.id.id[1],in.id.id[2],in.id.id[3]);					ret = R_DISCARD;					if (h.isValid())					{
						#if 0						// accept if this pong is a reply from one of our own pings, otherwise route back						if (servMgr->isReplyID(in.id))						{							servMgr->addHost(h,ServHost::T_SERVENT,sys->getTime());							ret = R_ACCEPTED;						}else							ret = R_ROUTE;						#endif					}				}			}			break;		case GNU_FUNC_QUERY: // query			ret = R_BROADCAST;			{				Host sh = servMgr->serverHost;				if (!sh.isValid())					sh.ip = 127<<24|1;				char words[256];				short spd = data.readShort();				data.readString(words,sizeof(words));				words[sizeof(words)-1] = 0;				MemoryStream xm(&data.buf[data.pos],data.len-data.pos);				xm.buf[xm.len] = 0;				Channel *hits[16];				int numHits=0;				if (strncmp(xm.buf,"<?xml",5)==0)				{					XML xml;					xml.read(xm);					XML::Node *cn = xml.findNode("channel");					if (cn)					{						ChanInfo info;						info.init(cn);						info.status = ChanInfo::S_PLAY;						numHits = chanMgr->findChannels(info,hits,16);					}					LOG_NETWORK("query XML: %s : found %d",xm.buf,numHits);				}else{					ChanInfo info;					info.name.set(words);					info.genre.set(words);					info.id.fromStr(words);					info.status = ChanInfo::S_PLAY;					numHits = chanMgr->findChannels(info,hits,16);					LOG_NETWORK("query STR: %s : found %d",words,numHits);				}			
				for(int i=0; i<numHits; i++)				{					bool push = (servMgr->getFirewall()!=ServMgr::FW_OFF);					bool busy = (servMgr->pubInFull() && servMgr->outFull()) || servMgr->relaysFull();					bool stable = servMgr->totalStreams>0;
					bool tracker = 	hits[i]->isBroadcasting();
					GnuPacket hit;					if (hit.initHit(sh,hits[i],&in,push,busy,stable,tracker,in.hops))						serv->outputPacket(hit,true);				}			}			break;		case GNU_FUNC_PUSH:	// push			{				GnuID pid;				data.read(pid.id,16);								//LOG("push serv= %02x%02x%02x%02x",servMgr->id[0],servMgr->id[1],servMgr->id[2],servMgr->id[3]);				//LOG("pack = %02x%02x%02x%02x",id[0],id[1],id[2],id[3]);				int index = data.readLong();				int ip = data.readLong();				int port = data.readShort();							ip = SWAP4(ip);				Host h(ip,port);				char hostName[64];				h.toStr(hostName);
#if 0				if (servMgr->isReplyID(pid))				{#if 0					Channel *c = chanMgr->findChannelByIndex(index);					if (!c)					{						LOG_NETWORK("push 0x%x to %s: Not found",index,hostName);					}else					{						if (!c->isFull() && !servMgr->streamFull())						{							LOG_NETWORK("push: 0x%x to %s: OK",index,hostName);							Servent *s = servMgr->allocServent();							if (s)								s->initGIV(h,c->info.id);						}else							LOG_NETWORK("push: 0x%x to %s: FULL",index,hostName);					}
#endif					ret = R_ACCEPTED;				}else{					LOG_NETWORK("push: 0x%x to %s: ROUTE",index,hostName);					routeID = pid;					ret = R_ROUTE;				}#endif					}			break;		case GNU_FUNC_HIT: // hit			{
				ret = R_DISCARD;

				ChanHit hit;
				if (readHit(data,hit,in.hops,in.id))
				{
					char flstr[64];
					flstr[0]=0;
					if (hit.firewalled) strcat(flstr,"Push,");
					if (hit.tracker) strcat(flstr,"Tracker,");
					
#if 0					if ((spd == 0) && (!isBroadcastHit))					{						if (servMgr->isReplyID(queryID))						{							ret = R_ACCEPTED;							LOG_NETWORK("self-hit: %s 0x%02x %s %d chan",hostName,f2,flstr,num);						}else						{							routeID = queryID;							ret = R_ROUTE;							LOG_NETWORK("route-hit: %s 0x%02x %s %d chan",hostName,f2,flstr,num);						}					}else					{						ret = R_BROADCAST;						LOG_NETWORK("broadcast-hit: %s 0x%02x %s %d chan",hostName,f2,flstr,num);					}
#else
					ret = R_BROADCAST;
					LOG_NETWORK("broadcast-hit: %s",flstr);
#endif				}			}			break;		default:			LOG_NETWORK("packet: %d",in.func);			break;	}		if ((in.ttl > 10) || (in.hops > 10) || (in.ttl==0))		if ((ret == R_BROADCAST) || (ret == R_ROUTE))			ret = R_DEAD;	return ret;}
// ---------------------------
bool GnuStream::readHit(Stream &data, ChanHit &ch,int hops,GnuID &id)
{
	int i;
	int num = data.readChar();	// hits
	int port = data.readShort();		// port
	int ip = data.readLong();		// ip
	ip = SWAP4(ip);
	int spd = data.readLong();		// speed/broadcast

	Host h(ip,port);
	char hostName[64];

	h.IPtoStr(hostName);

	bool dataValid=true;

	ChanHit *hits[100];
	int numHits=0;

	for(i=0; i<num; i++)
	{
		int index,bitrate,listeners;


		index = data.readLong();		// index
		bitrate = data.readShort();		// bitrate
		listeners = data.readShort();	// listeners

		// read name .. not used.
		char fname[256];
		data.readString(fname,sizeof(fname));
		fname[sizeof(fname)-1] = 0;

		ch.init();
		ch.firewalled = false;		// default to NO as we dont get the info until the next section.
		ch.host = h;
		ch.numListeners = listeners;
		ch.numHops = hops;
		ch.rhost[0] = ch.host;

		ChanInfo info;


		{
			char xmlData[4000];
			int xlen = data.readString(xmlData,sizeof(xmlData));

			if ((strncmp(xmlData,"<?xml",5)==0) && (xlen < GnuPacket::MAX_DATA))
			{
				//LOG_NETWORK("Hit XML: %s",xmlData);

				MemoryStream xm(xmlData,xlen);
				XML xml;
				xml.read(xm);
				XML::Node *n = xml.findNode("channel");
				if (n)
				{
					info.init(n);
					char idStr[64];
					info.id.toStr(idStr);
					LOG_NETWORK("got hit %s %s",idStr,info.name.cstr());

					ch.upTime = n->findAttrInt("uptime");

				}else
					LOG_NETWORK("Missing Channel node");
			}else
			{
				LOG_NETWORK("Missing XML data");
				//LOG_NETWORK("%s",xmlData);
				dataValid = false;
			}
		}

		if (info.id.isSet())
		{
			if (!chanMgr->findHitList(info))
				chanMgr->addHitList(info);

			ch.recv = true;
			ch.chanID = info.id;
			ChanHit *chp = chanMgr->addHit(ch);		

			if ((chp) && (numHits<100))
				hits[numHits++] = chp;
		}

	}


	int vendor = data.readLong();	// vendor ID

	int pubLen = data.readChar();	// public sec length - should be 2

	int f1 = data.readChar() & 0xff; // flags 1
	int f2 = data.readChar() & 0xff; // flags 2

	pubLen -= 2;
	while (pubLen-->0)
		data.readChar();


	char agentStr[16];
	agentStr[0]=0;
	int maxPreviewTime=0;

	// read private sector with peercast servant specific info
	int privLen = data.readChar();	

	if (privLen)
	{
		char privData[256];
		data.read(privData,privLen);
		if (strncmp(privData,"<?xml",5)==0)
		{
			MemoryStream xm(privData,privLen);
			XML xml;
			xml.read(xm);
			XML::Node *sn = xml.findNode("servent");
			if (sn)
			{
				char *ag = sn->findAttr("agent");
				if (ag)
				{
					strncpy(agentStr,ag,16);
					agentStr[15]=0;
				}
				maxPreviewTime = sn->findAttrInt("preview");
			}

		}
	}


	// not used anymore
	GnuID queryID;
	data.read(queryID.id,16);

	bool isBroadcastHit=false;
	if (f1 & 32)
		isBroadcastHit = (f2 & 32)!=0;

	for(i=0; i<numHits; i++)
	{
		if (f1 & 1)
			hits[i]->firewalled = (f2 & 1)!=0;

		if (f1 & 64)
			hits[i]->tracker = (f2 & 64)!=0;

	}

	return dataValid;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久久久精k8 | 91精品福利视频| 亚洲国产激情av| 大胆亚洲人体视频| 最新成人av在线| 国产欧美日本一区二区三区| 亚洲伊人色欲综合网| 久久蜜桃一区二区| 欧亚洲嫩模精品一区三区| 豆国产96在线|亚洲| 国产v日产∨综合v精品视频| 中文子幕无线码一区tr| 国产在线一区观看| 欧美日韩精品二区第二页| 欧美日韩综合色| 久久你懂得1024| 久久综合久久99| 在线观看日韩国产| 欧美三级电影一区| 7777精品久久久大香线蕉| 成人精品亚洲人成在线| 99久久精品免费看| 六月丁香综合在线视频| 亚洲欧美激情一区二区| 国产午夜精品久久久久久免费视| 一本久久精品一区二区| 国产不卡在线一区| 色综合中文字幕国产| 亚洲一二三四区| 久久这里只精品最新地址| 国产性做久久久久久| 亚洲人成7777| 久久99精品久久久久久| 午夜精品福利一区二区三区av| 国产精品久久久久影院色老大| 亚洲日本乱码在线观看| 日本成人在线不卡视频| 亚洲第一搞黄网站| 一区二区在线观看不卡| 专区另类欧美日韩| 麻豆成人av在线| 麻豆精品在线播放| 97久久超碰国产精品电影| 欧美男女性生活在线直播观看| 欧美精品一区二| 亚洲高清在线精品| 国产高清亚洲一区| 成人av网址在线观看| 9久草视频在线视频精品| 粉嫩av一区二区三区| 7777精品伊人久久久大香线蕉的 | 宅男在线国产精品| 国产精品亲子伦对白| 国产精品美女久久久久aⅴ| 日韩精品欧美精品| 久久99国内精品| 色999日韩国产欧美一区二区| 久久久久久久久久久电影| 日韩精品色哟哟| 欧美色精品在线视频| 亚洲激情图片小说视频| proumb性欧美在线观看| 国产亚洲精品中文字幕| 九九九精品视频| 欧美v日韩v国产v| 欧美韩国日本一区| 精品一区二区三区的国产在线播放 | ww久久中文字幕| 麻豆成人91精品二区三区| 欧美精品三级日韩久久| 亚洲精品一区二区精华| 自拍偷拍亚洲综合| caoporm超碰国产精品| 国产精品午夜在线观看| 国产成人亚洲综合a∨猫咪| 久久久一区二区三区捆绑**| 久久精品国产一区二区| 日韩精品一区二区三区在线观看| 国产精品麻豆99久久久久久| 国产成人免费xxxxxxxx| 国产欧美一区视频| 99精品视频一区二区| 国产精品福利一区二区三区| 99视频精品全部免费在线| 国产亚洲精品aa| 成人午夜激情在线| 久久久国产综合精品女国产盗摄| 国产在线不卡一区| 欧美福利视频一区| 国产欧美久久久精品影院| 成人做爰69片免费看网站| 国产精品天美传媒沈樵| www.视频一区| 亚洲精品高清视频在线观看| 91蝌蚪porny九色| 久久精品亚洲一区二区三区浴池| 国产999精品久久| 国产精品三级视频| 欧美三级视频在线播放| 老司机精品视频线观看86| 国产精品天美传媒沈樵| 欧美专区日韩专区| 精品一区二区综合| 国产欧美日产一区| 91.麻豆视频| 国产成人综合在线观看| 亚洲综合色区另类av| 日韩一区二区在线看| 亚洲成a人v欧美综合天堂| 91精品免费在线观看| 国产91在线|亚洲| 亚洲激情六月丁香| 精品伦理精品一区| 99re热这里只有精品视频| 日本中文一区二区三区| 国产清纯白嫩初高生在线观看91| 99精品视频在线观看免费| 日韩精品亚洲一区二区三区免费| 日韩欧美电影一区| 91极品美女在线| 国产一区二区中文字幕| 亚洲成人激情av| 欧美激情一区二区| 日韩欧美亚洲另类制服综合在线 | 波多野结衣91| 久久精品二区亚洲w码| 亚洲男帅同性gay1069| 久久久精品国产免大香伊| 欧美色网一区二区| 国产成a人无v码亚洲福利| 亚洲动漫第一页| 中文字幕一区二区视频| 国产69精品久久久久777| 亚洲午夜三级在线| 亚洲视频资源在线| 国产亚洲欧美日韩日本| 精品久久久三级丝袜| 欧美一区二区三区性视频| 亚洲精品视频一区| 欧美激情资源网| 久久久久国产精品麻豆ai换脸| 欧美日韩精品欧美日韩精品| 91婷婷韩国欧美一区二区| 福利一区在线观看| 国产专区欧美精品| 精品系列免费在线观看| 秋霞国产午夜精品免费视频| 欧美一区二区大片| 欧美日韩aaa| 色综合久久久久| 国产精品99久| 一区二区三区欧美日韩| 欧美一区二区精品| 91精品综合久久久久久| 欧美精品v国产精品v日韩精品| 一本久道久久综合中文字幕| 91污片在线观看| 91国偷自产一区二区使用方法| 91香蕉视频污在线| 欧美亚洲禁片免费| 欧美日韩精品一区二区| 欧美日韩视频在线一区二区| 欧美日韩国产在线观看| 制服视频三区第一页精品| 欧美日本在线一区| 日韩美女天天操| 国产午夜精品一区二区三区四区| 国产日产欧美一区二区视频| 亚洲国产成人一区二区三区| 一色桃子久久精品亚洲| 艳妇臀荡乳欲伦亚洲一区| 亚洲一本大道在线| 另类的小说在线视频另类成人小视频在线| 欧美a级理论片| 国产91露脸合集magnet | 欧美亚洲综合另类| 欧美久久免费观看| 亚洲精品一区二区三区精华液| 国产午夜一区二区三区| 亚洲精品视频在线| 男女性色大片免费观看一区二区| 蜜臀av性久久久久av蜜臀妖精| 国产精品1区2区| 一本久久综合亚洲鲁鲁五月天| 欧美一区二区久久久| 国产精品欧美一级免费| 午夜欧美电影在线观看| 国产精品一二二区| 欧美制服丝袜第一页| 日韩欧美一级在线播放| 亚洲天堂av老司机| 日韩成人伦理电影在线观看| 成人视屏免费看| 7777精品伊人久久久大香线蕉最新版| 777奇米四色成人影色区| 国产亚洲美州欧州综合国| 亚洲一区日韩精品中文字幕| 国产麻豆精品视频| 欧美放荡的少妇| 综合色天天鬼久久鬼色|