Projeto de Implementação do protocolo Gnutella

Revisão do Documento 0.1
Status: em produção

Introdução

Esse projeto visa a implementação de um servent1 da rede Gnutella, de acordo com a especificação do protocolo Gnutella versão 0.4, revisão 1.6 . 
O servent é divido em duas partes e interage com o usuário e outros servents:

Funções

Conexão
É feita através de uma consulta na lista de servents, consulta o primeiro host declarado na estrutura e tenta fazer a conexão, caso não tenha sucesso, segue para o próximo host. Se todas tentativas falharem, uma mensagem é enviada para o usuário.
função conexao(lista_servents)
	for(i; I<tam_lista_servents; i++)
		conecta(lista_servents[i];

Ping
Pong
Query
QueryHits
Push

Estrutura de dados

Descritores
Contém a definição de todos os descritores do protocolo, declarados de forma estática em um função do programa.
	Função: constantes(void)
definir PING 		0x00
definir PONG 	0x01
definir QUERY 	0x80
definir QUERYHITS	0x81
definir PUSH 	0x40
definir BYE 		0x02

Lista de servents
Arquivo texto (servents.ini) com hosts que já estão conectados a rede, lista obtida através de sites na internet.
	Estrutura do arquivo:
	<nome do host>:<porta>
	gnet.ath.cx:6346
	gnet2.ath.cx:6346
	gnet3.ath.cx:6346
	gnet4.ath.cx:6346
	gnet5.ath.cx:6346
	gnotella.fileflash.com:6346
	gnutellahosts.com:6346

Buscas
Lista com 
Diretório de arquivos

Diagrama de estados

Bibliografia
http://rfc-gnutella.sourceforge.net/
http://www.gnutelliums.com/
hosts: http://gnutella.da.ru/