Seguinte. fiz um chat em java para 2 pessoas, ou seja cliente/servidor.
Estou querendo desta vez… montar um de modo que clientes se comuniquem com outros clientes.
Deu uma boa lida na internet inclusive aqui no forum, pelo que entendi eu devo dentro do while de repeticao que esta esperando o SOCKET, armazenar cada conexao de cada cliente em um vetor ou lista ou array.
Apos isso devo usar esse vetor para enviar as msg , ou seja cada usuario conectado esta dento de uma posicao do vetor.
o que fiz ate agora eh isso.
estou enviando uma string como o conteudo do vetor para ser aberto no cliente, pois no ENVIA unica coisa que posso passar eh string, inteiro ,etc .(nao tem como passar o vetor literalmente )
o que serias essas conexoes dentro do vetor? o que estou inserindo eh apenas o nick do usuario que ele esta enviando
Eu terei que enviar esse vetor para os clientes ? O que deve ser salvo dentro desse vetor?
to meio perdidao nessa parte . Quem poder explicar com palavras agradeço
Quem kiser explicar com links ( nao precisa pois ja tenhu varios )
Quando o cliente enviar uma msn… formata uma mensagem com os parametros( user_Origem, mensagem, User_Destino)
2)O servidor recebe isso , pesquisa o ip do user_destino que está logago e repassa para o destino
o Destino recebe isso do servidor e mostra a origem (usuário que enviou ) e a mensagem
Essa transmissão pode ser via texto XML…daí vc pode separar o que é user_origem, user_destino, e o que é a mensagem
RODEI RODEI RODEI e nao xeguei a nada. Algum sabio ai aparece la vai as pergunta.
Para eu conseui esse resultado. o que eh preciso?
um vetor de ServerSocket? pra receber varias conexos?
ou
apenas um ServerSocket e um vetor de Socket ?
galera alguem ajud apor favor me da uma aula algo que me faça sair do lugar. dia inteiro hj e to na mesma situacao, kero aprender certinhu esse negocio de Socket
Crie uma classe que contenha pelo menos a mensagem e o usuário de destino, e que implemente Serializable. Criado o objeto, este é enviado ao servidor, o qual repassará a mensagem ao usuário de destino. Abaixo, exemplo da classe que conterá a mensagem a ser entregue ao cliente de destino.
public class MensagemTO implements Serializable{
private final User userOrigem;
private final User userDestino;
private final String message;
public MensagemTO( final User userOrigem, final User userDestino, final String message ){
this.userOrigem = userOrigem;
this.userDestino = userDestino;
this.message = message;
}
public User getUserOrigem(){
return this.userOrigem;
}
public User getUserDestino(){
return this.userDestino;
}
public String getMessage(){
return this.message;
}
}
ServerSocket server = new ServerSocket(5000);/*Pode ser qualquer porta entre 1024 e 65535*/
Socket s;
BufferedReader br;
PrintStream ps;
ArrayList<PrintStream> onlines = new ArrayList<PrintStream>();
try {
while (true) {
s = server.accept();
ps = new PrintStream(s.getOutputStream);
onlines.add(ps);
br = new BufferedReader(s.getInputStream());
Thread t = new Thread(new Runnable() {
public void run() {
try {
String aux;
while((aux = br.read()) != null) {
for (int i = 0; i < onlines.size(); i++) {
onlines.get(i).println(aux);
}
}
} catch(Exception e) {
}
}
});
t.start();
}
} catch (Exception e) {
e.printStackTrace();
}
Troque os fluxo que usei pelos os que você estava usando.