Pensando em Thread

10 respostas
I

Olá Pessoal, estou estudando threads e sockets e como os conceitos ainda não estão bem difundidos, estou precisando de uma ajuda.

Vou ter 3 máquinas (todas se comunicando entre si), porém é com idéia de sistemas distribuídos e portanto não posso ter um servidor isolado.
A minha dúvida , qual é a melhor forma de fazer:

  1. Ter uma máquina que aguarde duas conexões do tipo cliente e fazer todas se comunicando entre si.

  2. Usar Thread em todas as três classes (supondo que cada uma é uma máquina), mas aí me confundo bastante!

Enfim, qual é a melhor forma, grato pessoal!!

10 Respostas

ViniGodoy

Se é para sistemas distribuídos, talvez a melhor idéia seja usar o Socket num endereço de Broadcast. Assim, todas as comunicações da rede são recebidas por todas as máquinas.

Caso isso não seja possível, duas threads gerenciando os dois outros sockets devem servir. Mas nesse caso você poderá ter problemas de quem se conecta com quem.

I

O problema é que eu não posso usar broadcast, pq a idéia não é mandar a mesma msg para todas as outras máquinas, mas apenas manter a comunicação.

A segunda dica tb já pensei nisso, mas o problema é que no caso de duas threads gerenciando outros dois sockets gera o problema de os dois sockets não conseguirem se comunicar (se eu estiver errado me corrija)

ViniGodoy

Estranho, a maioria dos algoritmos de sistemas distribuídos considera o uso de broadcasts.

O que o programa que você quer implementar tem que fazer? Talvez tendo uma noção do seu objetivo seja mais fácil auxilia-lo.

I

Eu preciso de distribuir um mesmo recurso entre as máquinas, onde cada uma faz um uma coisa diferente.
Por exemplo, falando bem abstrato suponha que eu precisasse pintar 3 paredes (uma máquina pinta de azul, a outra de amarelo e outra vermeho, a casa não vai ficar boa rsrsrs) Mas no final o resultado é visto como um todo, entendeu?

grato

T

Normalmente você usa broadcast mesmo, e põe na mensagem algum indicador que a máquina cliente irá usar para decidir se deve processar ou não a mensagem.

I

esqueci de dizer, ainda é desejável que o usuário digite o IP da máquina a qual quer conectar!

ViniGodoy

Então para que o endereço IP? Você ainda teria que fazer uma aplicação para conversar com a “máquina” formada por essas três máquinas?

ViniGodoy

Me diga uma coisa… o que o seu professor está ensinando?
Como ele geralmente aborda o assunto?
Ele deu alguma orientação, ou falou o famoso “se virem”?

Ou isso não é para faculdade, ou se for por razões pessoais, como você chegou no assunto? Talvez entendendo mais o que tem em volta, ficará mais fácil ajudar.

I

É faculdade!
Eu prieciso de três máquinas, todas trabalhando como cliente/servidor ao mesmo tempo, resumindo é isso!

louds

Qual o segredo então? Abra 1 ServerSocket em cada uma e depois coloque cada uma conectada na outra.

Algo assim:

ServerSocket ss = new ServerSocket(3456);
Socket a = new Socket("10.0.0.2", 3456);
Socket b = new Socket("10.0.0.3", 3456);
Criado 16 de fevereiro de 2007
Ultima resposta 17 de fev. de 2007
Respostas 10
Participantes 4