示例#1
0
//Peer_id 为返回对方peer_id;
bool parse_handshake_info(const t_byte* pbuf, Sha1Hash &info_hash, PeerID &peer_id, t_byte ext_info[8])
{
		assert(pbuf != 0);
		
		if(pbuf[0] != PROTOCOL_LENGTH)
		{
				
				DEBUG_PRINT0("invalid protocol length\n");
				return false;
		}
		
		//DEBUG_PRINT1("%s\n", (const char*)&pbuf[1]);
		if(memcmp(&pbuf[1], PROTOCOL_STRING, PROTOCOL_LENGTH) == 0)
		{
				//DEBUG_PRINT0("invalid protocol string\n");
				memcpy(ext_info, &pbuf[20], 8); 
				info_hash.Reset(&pbuf[28]);
				peer_id.Reset(&pbuf[48]);
				return true;
		}else
		{
				DEBUG_PRINT0("invalid protocol string\n");
				return false;
		}
		
		
}