Tenho um sistema de comunicação interna que fiz, onde uso sockets para 2 pessoas se comunicarem instantâneamente, exatamente como no messenger aonde existe uma lista de contatos que podem iniciar comunicação. A extrutura funciona da seguinte forma.: Cada maqina da rede roda um serverSocket e um cliente. Portanto forma-se uma “ponte”
entre DOIS usuarios. A questão é a seguinte como posso estabelecer uma conexão com mais de duas pessoas, ou seja uma expécie de conferencia entre usuarios da lista de contatos (assim como no msn existe esta opção)?
O server socket pode ficar dentro de um laço, assim quando uma conexão é estabelecida com um contato, ele volta a escutar por novas conexões. Neste caso você vai precisar controlar em qual socket você vai colocar cada conexão, é recomendável você usar uma thread para cada conexão recebida.
P
Piabao
Opa vlw pela dica amigo . . . mas eu ja estou fazendo isso, o meu server socket fica em uma thread e esta sempre esperando por conexões, desta forma um usuario pode estabelecer varias conexões simultaneas. Porém o meu problema esta em mais de 2 usuarios compartilharem o mesmo “socket”, para que possam participar da mesma conversa. Pelo que aprendi sobre sockets, ele so permite a conexão entre UM servidor e UM cliente. Talves a solução seja por multicast porém acredito que não tenha como expecificar os usuarios que receberão as mensagens em multicast . . .
rmendes08
Opa vlw pela dica amigo . . . mas eu ja estou fazendo isso, o meu server socket fica em uma thread e esta sempre esperando por conexões, desta forma um usuario pode estabelecer varias conexões simultaneas. Porém o meu problema esta em mais de 2 usuarios compartilharem o mesmo “socket”, para que possam participar da mesma conversa. Pelo que aprendi sobre sockets, ele so permite a conexão entre UM servidor e UM cliente. Talves a solução seja por multicast porém acredito que não tenha como expecificar os usuarios que receberão as mensagens em multicast . . .
Os protocolo TCP/UDP, são bem claros. Uma conexão só é possível entre 1 processo cliente e 1 processo servidor. É possível sim fazer uma conferência, mas esse controle precisa ser feito pela sua aplicação. Bom, você já deve ter um mapeamento de um usuário autenticado para o socket usado. O que você precisa fazer é que quando uma pessoa quiser iniciar um chat em grupo, o client precisa enviar a lista de quem vai participar, de forma que mensagens enviadas para a lista deve ser replicada para todos clients que estão participando da conversa.
P
Piabao
Pois é eu estava na esperança de que acharia uma solução menos trabalhosa, mas tudo bem vamos lah . . .
Fiz alguns testes aki porem tenho um problema. Eu até consegui enviar uma replica da conversa a outro usuario. porém quando ele envia o retorno para mim ou para o terceiro usuario, abre uma outra janela de conversa, ou, modificando meu codigo eu não recebo as mensagen de volta, isso porque a thread que esta ouvindo um cliente não “ouve” de varios usuarios ao mesmo tempo.
mais alguma dica???
andre.henriques
Piabao,
Dá uma olhada no IM que desenvolvi, vc pode encontrar nesse endereco