Criar Aplicação P2P

Boas já á algum tempo que tenciona criar este projecto, a ideia é criar uma sistema em algo parecido ao bittorrent mas sem precisar de um tracker, seria apenas necessário uma servidor onde os clientes se ligariam e assim saberem que outros clientes estariam também online sendo depois a passagem de dados feita entre os clientes apenas.
Embora já tenho alguns conhecimentos de Java gostaria de fazer a coisa bem feita se possivel quase a nível profissional o principal objectivo seria o de aprender mais e melhor Java.
Pensei em usar Sockets UDP visto serem vais flexíveis que os TCP, mas precisava de uma opiniões pois não faço ideia como tratar questões como segurança, performance etc…
No fundo gostava de saber qual acham a melhor forma de desenvolver um projecto deste género como desenvolver a coisa.

Agradeço desde já tua a ajuda que possa ser dada.

ola amigo,

nao sei se essa é a melhor ideia nao…
utilizar um servidor central pra gerenciar as conexoes?
bom, este foi o maior erro do Napster por exemplo.
A grande ideia do bittorrrent é justamente ser completamente
distribuido. A carga causada por inumeros clientes tentando se conectar
pode derrubar o servidor. e ai? cai tudo! ninguem sabe + onde encontrar os arquivos e quem
esta ou nao na rede.

é muito + interessante usar abordagens distribuidas,
como a inundacao de consultas por exe.

boa sorte,

abraços

A minha ideia era fazer algo tipo
O servidor apenas serviria para dizer aos clientes que outros clientes estariam online e para mandar uma lista de todos os ficheiros disponíveis na rede assim quando um cliente pedisse um ficheiro o servidor iria enviar uma lista de clientes com esse ficheiro, a partir dai seria cliente com cliente, tudo isto em UDP para não haver congestões de ligação. Agora não sei é como passar isto á pratica :S

ola amigo,

entendo o q quer dizer, mas penso q com apenas um ponto gerenciando as conexoes,
este ponto será um ponto muito fragil da aplicacao.
e outra coisa: pensas em usar UDP pra trasnferencia de arquivos?
se for, apesar de ser + leve, vc nao tera confiabilidade dos dados, o q é impraticavel.

abraços

Sim o UDP tem esse problema é por isso que irei usar md5 para cada ficheiro para garantir que o ficheiro ficará intacto, para além disso a ideia é que seja possivel pedir e enviar vários blocos para vários clientes em simultâneo e TCP requer que seja feita uma ligação UDP basta endereçar os dados depois será criar algo género hashtable para indexar todos os pedaços recebidos de determinado ficheiro. Não sei é que formas de implementação serão melhores para isto :s

Se é P2P que você quer, e comunicação multi-mídia, então veja os protocolos RTP, SIP, H323 etc

de uma olhada no sourceforge, tem alguns projetos legais lá sobre o tema p2p.

fw

Ps: cuidado com UDPs, se os pontos estiverem distantes o ruído será muito grande.