Alguém pode me explicar isso?

2 respostas
_fs

Oi, boa tarde.

Seguinte: tenho um mulithreaded server que, de acordo com os exemplos, se dá assim:

classe principal, onde eu seto o ServerSocket e mando executar os threads client
subclasse client, onde eu determino a conexão com cada client que se conectar

e separadamente uma classe client

Minhas dúvidas são:

[b]- se eu quiser estabelecer comunicação cliente x cliente, server x clientes, clientes x server, onde eu tenho que realizar os procedimentos na classe server? Na classe principal ou na subclasse?

  • na comunicação cliente x cliente, há alguma coisa extra a ser feita ou so declarar Output e Input e pegar as informações?

  • no server, como saber de qual client cada mensagem se origina?
    [/b]

Agradetados adiancimentos. :mrgreen:

2 Respostas

kuchma

Opa,

Por “estabelecer comunicacao” eu entendi que voce quer abrir uma conexao, certo? A grosso modo falando (que expressaozinha :)), quem abre uma conexao eh um cliente e quem “serve” (responde) eh o servidor. Ou seja, o cliente sempre abre a conexao e nao vice-versa. Veja - isso eh apenas questao de nomenclatura. Se voce quiser fazer o seu servidor abrir uma conexao e puser um ServerSocket na classe cliente, blz - mas ai o servidor estaria fazendo o papel de cliente e vice-versa. Nao sei se consegui ser claro. :smiley:

Entao voce colocaria as chamadas de conexao na classe cliente e as chamadas de “escuta” na classe servidora.

Voce quer que dois clientes se comuniquem, eh isso? Existe alguma coisa que voce possa fazer de modo que um faca o papel de servidor e outro de cliente? Exemplo: voce sabe o IP ou hostname do host da classe servidor. Legal, faca a classe cliente conectar-se nesse IP.

O outro caso seria voce nao ter essa informacao (cliente nao sabera IP do servidor em tempo de execucacao) - ou seja, voce verdadeiramente tem dois clientes e voce deseja coloca-los em contato (estilo ICQ). Para isso recomendo que voce faca um servidor que controle as conexoes. Entao faca os clientes conectarem nesse servidor e enviar mensagens para ele. O servidor rebate as mensagens para os destinatarios corretos.

Seria muito mais comodo simplesmente colocar dois clientes em contato direto, neh? Mas acho que conceitualmente falando, isso nao existe (eu tambem ja quebrei a cabeca um tempo pensando em coisas assim ;)).

Bien, se voce nao tiver um metodo na API que te retorne isso (confesso que estou com preguica de procurar isso pra voce - vai na tua documentacao e da uma conferida :D), faca cada mensagem carregar essa informacao (algo como um “cabecalho” - voce conhece como funciona uma conexao HTTP e os headers que sao trocados? A ideia eh a mesma :)).

Sugestao: coloque um titulo mais descritivo nas tuas mensagens… Eu abri esse topico por acaso e como ninguem tinha respondido, resolvi dar uns pitacos… Mas normalmente teria passado batido por mim (nao que isso seja grande coisa, mas imagine se todo mundo fizer isso ;)). O que eh totalmente compreensivo - fiquei dois dias sem entrar no forum e quando voltei tinha quase 80 topicos. Infelizmente o tempo soh permite a leitura do que for mais interessante (especialmente os off-topic ;)). E como escolher? Titulo/subject eh um bom criterio. :smiley:

Marcio Kuchma

_fs

Cara, muitérrimo obrigado :mrgreen: mesmo mesmo

E sobre a títulos, pode deixar :slight_smile:

Criado 22 de outubro de 2003
Ultima resposta 23 de out. de 2003
Respostas 2
Participantes 2