| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/06/2010 08:54:08
|
f4binho
Debugger
Membro desde: 29/03/2010 11:55:59
Mensagens: 63
Localização: Wonderfull City
Offline
|
Desculpa pessoal por criar esse tópico, mas gostaria de saber a fundo como funciona esse método.
No mais o que eu consegui achar foi que ele para a Thread do servidor e aguarda uma nova conexão e retorna uma socket para a comunicação do cliente.
Só que eu queria saber qual é relação estabelicida por entre esse socket do método accept() e o socket criado pelo cliente. Pois eu queria criar um chat que todos os clientes conectassem com o servidor da aplicação e escolham um único contato para trocar mensagens. Então essas mensagens ficariam dedicadas, como numa seção do msn mesenger. Só que estou tendo dificuldades para achar uma solução prática. Então pensei na relação entre os sockets.
Ou então, queria extender a classe ServerSocket para funcionar da forma que eu queria. Se alguém tiver uma solução mais simples de como funciona para manter um único servidor de chat, com vários usuários e com as mensagens dedicadas entre 2 clientes como no messenger, ou me enviem o código implementado da classe ServerSocket que assim eu adapto para a minha necessidade.
Sinceramente, não sei se aqui foi o lugar certo para fazer tal pedido, mas agradeço a colaboração
[]'s
|
Há 2 palavras que abrem muitas portas: Puxe e empurre. |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/06/2010 10:24:18
|
leonardom
Virtual Machine Man
![[Avatar]](/images/avatar/7f5d04d189dfb634e6a85bb9d9adf21e.jpg)
Membro desde: 23/02/2003 11:41:23
Mensagens: 679
Localização: Anywhere
Offline
|
Fabinho,
Não existe essa relação, vc vai ter que guardar e identificar esses sockets dos clientes em um Map por exemplo. Nesse Map você guardaria o nickname do cliente e o Socket de conexão, tipo:
Para obter o nickname vc pode implementar uma lógica para logo após receber a conexão do cliente, ele enviar o nickname:
Para fazer a comunicação entre um cliente com o outro, o cliente envia a mensagem junto com o nickname do usuario de destino. Ai vc obtem o socket de conexão desse através do seu Map e envia a mensagem.
|
"If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas."
George Bernard Shaw (1856 - 1950) - Irish dramatist - Nobel Prize of Literature, 1925
blog: http://leonardom.wordpress.com
http://www.insidecode.com.br
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/06/2010 10:27:48
|
f4binho
Debugger
Membro desde: 29/03/2010 11:55:59
Mensagens: 63
Localização: Wonderfull City
Offline
|
Boa não tinha pensado no HashMap
Aff, pior que eu mecho direto com HashMap para passagens de parâmetros para o JasperReports.
Flw leonardom
Vou testar
|
Há 2 palavras que abrem muitas portas: Puxe e empurre. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/06/2010 10:58:00
|
f4binho
Debugger
Membro desde: 29/03/2010 11:55:59
Mensagens: 63
Localização: Wonderfull City
Offline
|
Vc tem um código mais completo aí?
estou tendo um pouco de dificuldades...
|
Há 2 palavras que abrem muitas portas: Puxe e empurre. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/06/2010 11:24:28
|
leonardom
Virtual Machine Man
![[Avatar]](/images/avatar/7f5d04d189dfb634e6a85bb9d9adf21e.jpg)
Membro desde: 23/02/2003 11:41:23
Mensagens: 679
Localização: Anywhere
Offline
|
Não tenho código completo. Mas em qual parte esta tendo dificuldades?
|
"If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas."
George Bernard Shaw (1856 - 1950) - Irish dramatist - Nobel Prize of Literature, 1925
blog: http://leonardom.wordpress.com
http://www.insidecode.com.br
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/06/2010 12:28:25
|
f4binho
Debugger
Membro desde: 29/03/2010 11:55:59
Mensagens: 63
Localização: Wonderfull City
Offline
|
Por exemplo,
Se eu tiver um servidor numa máquina e eu queria acessar com um cliente em uma outra máquina. Como eu passaria o parâmetro do nickname, como se daria essa comunicação?
O cliente ao conectar tudo bem eu faria um HashMap, mas como eu faria no caso da máquina do servidor. Como eu poderia dizer que o socket "x" representa a um específico nickname?
|
Há 2 palavras que abrem muitas portas: Puxe e empurre. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/06/2010 12:38:12
|
zerokelvin
JavaGuru
![[Avatar]](/images/avatar/9b88d7607eb5516bf8529b50dca522be.jpg)
Membro desde: 29/03/2010 21:08:13
Mensagens: 219
Offline
|
sei q devo evitar mensagens nada a ver com o tópico... mas num tem como:
Cara, q gif da hora!
|
ubi dubium ibi libertas |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/06/2010 13:16:33
|
f4binho
Debugger
Membro desde: 29/03/2010 11:55:59
Mensagens: 63
Localização: Wonderfull City
Offline
|
Esse comentário não vai ajudar na minha dúvida mas obrigado assim mesmo
|
Há 2 palavras que abrem muitas portas: Puxe e empurre. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/06/2010 08:41:26
|
leonardom
Virtual Machine Man
![[Avatar]](/images/avatar/7f5d04d189dfb634e6a85bb9d9adf21e.jpg)
Membro desde: 23/02/2003 11:41:23
Mensagens: 679
Localização: Anywhere
Offline
|
Fabinho,
Quando vc tem um conexão estabelecida (cliente -> servidor) vc vai ter o input e output do Socket. No caso do cliente através do input (socket.getInputStream()) vc vai poder ler mensagens vindas do servidor e através do output (socket.getOutputStream()) vc vai poder enviar dados/mensagens para o servidor. No caso do nickname vc usaria o output para enviar para o servidor e no lado do servidor vc irá ler esse nickname atraves do input.
Acho que você tem que estudar um pouco mais sobre Sockets e IO para conseguir implementar o que deseja. Eu indico a apostila da Caleum http://downloads.caelum.com.br/apostila/caelum-java-objetos-fj11.pdf. Na apostila tem um capítulo sobre IO e no final da apostila tem um apendice sobre Sockets o qual ensina implementar um servidor e um cliente.
|
"If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas."
George Bernard Shaw (1856 - 1950) - Irish dramatist - Nobel Prize of Literature, 1925
blog: http://leonardom.wordpress.com
http://www.insidecode.com.br
|
|
|
 |
|
|