Criar 2 ou N Sockets

4 respostas
K

Coe galera… mas dúvida…

me encontro na seguinte situação… tenho 2 máquinas com SERVIÇOS rodando em uma deternimda porta. exemplo:

PC 1
Serviço rodando
IP:192.168.0.20
Porta:2979

PC 2
Serviço rodando
IP:192.168.0.25
Porta:2981

Tenho uma página onde um usuário X digita uma mensagem e ela é enviada para um dos servidores (isso eu controlo… sei pqual enviar).

Minha dúvida é… como abrir essas 2 conexões e manter elas abertas?
Como gerenciar esse lista de sockets e metodo de enviar e receber a mensagem?
Pq cada mensagem q eu enviar irei ter uma resposta para exibir.

vlw!!
[]´s!

4 Respostas

eduveks

Já ouviste falar no projeto http://www.netuno.org :smiley:

Daqui a pouco me proibem aqui no guj de fazer publicidade ao projeto :stuck_out_tongue:

Este projeto é um WebServer pequeno mas poderoso, e podes pegar código avontade…

Olha aqui:

http://netuno.googlecode.com/svn/trunk/src/org/netuno/server/

As Classes que te interessam é a ServiceMonitor e a Service… mas a ServiceMonitor é exatamente o que vc precisa…

Repara neste método do ServiceMonitor:

Aqui fica a espera de uma conecção e paga o SocketClient:

Socket clientSocket = Config.ServerSocket.accept();

Assim que conecta um cliente lança a classe Service que vai tratar da conecção deste cliente

E como esta num loop while(true), vai voltar para o:

Socket clientSocket = Config.ServerSocket.accept();

A espera de um novo cliente

Assim pode conectar N clientes em simultaneo…

Mas repara que o ServiceMonitor e o Service são threads e o ServiceMonitor usa o Runnable e o Service o notify, portanto te aconselho a usar estas duas classes, no ServiceMonitor acho que não precisa de fazer nenhuma alteração, mas no Service altera o que esta dentro do método run no else do if…

Qualquer dúvida diz :stuck_out_tongue:

E onde inica o ServiceMonitor é na class Main…

Good Luck… e espero que isto te ajude :wink:

K

Não existe MAIN! rssss
mas não rola de trocar meu webservice… ele ja ta no tomcat funcionando redondo… preciso ve como abro várias conex~eos com PC diferentes e gerenciou essas conex~eos…

[]´s lek

eduveks

Desculpa… mas entendi errado…

Tua pergunta ta muito mal elabora, e isto não tem nada a ver com sockets…

Isto que vc quer fazer, basta quando conecta o PC1 vc criar uma flag na base de dados dizendo que o PC1 conectou, depois conecta o PC2 ai ativa uma flag na base de dados que o PC2 conectou… e assim por diante…

A cada conecção de um PC vc verifica se todos estão conectados, se estiverem então ta tudo pronto pra começar… e verifca se estão todos conectados verificando na base de dados se todos estão marcados como conectados, e também uma coluna para guardar o datetime da conecção.

E também guarda na tabela o IP de cada um.

Depois vc tem outra tabela para as mensagens, cada mensagem vc relaciona com o o Dono, na outra tabela de IPS… assim vc sabe que esta mensagem é para mostrar para os outros.

Para saber se alguém desconectou, coloca no unload do body do html uma chamada para uma página que fecha a conecção, e a para além disto, coloca um refresh na página para de tempos em tempos fazer um refresh ao datetime para menos de 1 min por exemplo… ai vc sabe que quem tem o datetime com mais de 1 min é por q perdeu a conecção ou coisa assim…

Meu isto é simples de fazer, duas tabelinas, e mais jogada com refresh e boa…

Espero que agora tenha acertado…

Se for isto não tem nada a ver com Sockets, o que entendi é que querias fazer mesmo um chat, tipo IM e não em web based…

K

vc estava certo… era + parecido com um chat…

vlw
[]´s

Criado 25 de agosto de 2006
Ultima resposta 5 de set. de 2006
Respostas 4
Participantes 2