cara…
sem ver o codigo fica um pouco dificil falar.
mas acho que vc esta tentando abrir um conexão, mas ela já esta aberta.
Re:java socket
8 Respostas
Ok,
mas do outro lado a aplicação está ‘escutando’ no endereço correto ?
a primeira parte do codigo é o cliente alpha (iniciarConexao()) e o servidor alpha(aguardarConexao())?
se for, repare que as porta estao diferentes…
do demais, nao vejo erro… vc sabe onde esta ocorrendo a exception ?qual catch ta tratando ?
ok,
entendi
Tente fazer um coisa,
De um Sleep no Omega, para ver se esta dando tempo do servidor alpha ficar pronto para receber a conexão.
mas cara, to meio sem ideia do possa ser, o ideal seria debugar esse codigo, pq parece ser um detalhe que esta passando desapercebido
for ( String ip : listaIP ) {
try {
[b]Thread.sleep(10000);[/b]
conexao_cliente = new Socket( ip_cliente_alpha , 7702) ;
enviar = new PrintWriter( conexao_cliente.getOutputStream() ) ;
enviar.println( mensagem ) ;
enviar.flush();
enviar.close() ;
conexao_cliente.close() ;
} catch (IOException e) {
e.printStackTrace();
JOptionPane.showMessageDialog( null , "Servidor Omega não conseguiu estabelecer conexão com o cliente : " + ip , "Erro" , JOptionPane.ERROR_MESSAGE );
if ( listaAux.contains( ip ) ) {
listaAux.remove( ip ) ;
}
gravarIP( listaAux ) ;
}
Gente estou fazendo um pequena aplicação cliente servidor no java com uma simple troca de mensagem .
Quando o cliente envia a primeira mensagem o servidor recebe e exibe normal mas quando vai enviar a segunda vez é exibido uma Exception…
Alguem pode me dar uma luz que erro é esse !?!?!
Agradeço a quem ajudar .
Este erro tem haver com outra coisa creio eu…Pq tenho certeza que as conexões estao sendo todas fechadas…
Estou fazendo log disso.
public void iniciarConexao() {
System.out.println("Cliente Alpha estabelecendo conexão com o Servidor Alpha... \n" );
try {
conexao = new Socket("10.46.21.18" , 7700 );
System.out.println("Conexão estabelecida com o Servidor Alpha... \n" );
conexao.close();
aguardarConexao();
} catch (IOException e) {
JOptionPane.showMessageDialog( null , "Conexão não estabelecida com o Servidor Alpha." , "Cliente Alpha" , JOptionPane.ERROR_MESSAGE );
}
System.out.println("Conexão finalizada com o Servidor Alpha. \n");
}
public void aguardarConexao() {
try {
server = new ServerSocket(7702);
while ( true ) {
System.out.println("Cliente Alpha Aguardando Conexão...\n");
conexao_servidor = server.accept() ;
in = new InputStreamReader(conexao_servidor.getInputStream());
ler = new BufferedReader(in);
System.out.println("Conexao estabelecida no cliente alpha...\n");
while ( ( mensagem = ler.readLine() ) != null ) {
TelaExibirMensagem.getInstancia().exibirTela( mensagem );
}
in.close();
ler.close();
conexao_servidor.close();
System.out.println("Conexao finalizada no cliente alpha...\n");
}
} catch (IOException e) {
JOptionPane.showMessageDialog( null , "Erro na sincronização de mensagem com Servidor Alpha." , "Cliente Alpha" , JOptionPane.ERROR_MESSAGE );
}
}
public void iniciarServidorOmega( int porta ) {
System.out.println("Servidor Omega Aguardando Conexão...\n");
listaAux = getListaIP() ;
try {
server = new ServerSocket( porta ) ;
while ( true ) {
conexao = server.accept() ;
System.out.println("Servidor Omega conectado o cliente : " + conexao.getInetAddress().getHostAddress() + "\n") ;
in = new InputStreamReader( conexao.getInputStream() ) ;
ler = new BufferedReader( in ) ;
while ( ( mensagem = ler.readLine() ) != null ) {
listaIP = getListaIP() ;
for ( String ip : listaIP ) {
try {
conexao_cliente = new Socket( ip_cliente_alpha , 7702) ;
enviar = new PrintWriter( conexao_cliente.getOutputStream() ) ;
enviar.println( mensagem ) ;
enviar.flush();
enviar.close() ;
conexao_cliente.close() ;
} catch (IOException e) {
e.printStackTrace();
JOptionPane.showMessageDialog( null , "Servidor Omega não conseguiu estabelecer conexão com o cliente : " + ip , "Erro" , JOptionPane.ERROR_MESSAGE );
if ( listaAux.contains( ip ) ) {
listaAux.remove( ip ) ;
}
gravarIP( listaAux ) ;
}
}
}
System.out.println("Conexão finalizada com o servidor omega.");
}
} catch ( IOException e ) {
JOptionPane.showMessageDialog( null , "Erro ocorrido na inicialização do servidor." , "Servidor Omega" , JOptionPane.ERROR_MESSAGE );
}
}
O código é esse . Na primeira vez a mensagem é enviada normal ao clinete alpha !
Mas quando vo mandar a mensagem pela segunda vez é que exibr essa Exception …Connection Refused
a primeira parte do codigo é o cliente alpha (iniciarConexao()) e o servidor alpha(aguardarConexao())?
se for, repare que as porta estao diferentes…
do demais, nao vejo erro… vc sabe onde esta ocorrendo a exception ?qual catch ta tratando ?
Na verdade é assim : O cliente Alpha vai estabelecer conexao com o servidor Omega . Após ele estabelecer a conexao o servidor Omega vai enviar uma mensagem novamente ao cliente aplha que na verdade fica na escuta naquela porta mesmo…
O erro de Exception vem nessa linha .
} catch (IOException e) {
e.printStackTrace();
JOptionPane.showMessageDialog( null , "Servidor Omega não conseguiu estabelecer conexão com o cliente : " + ip , "Erro" , JOptionPane.ERROR_MESSAGE );
O engraçado que na primeira vez funciona tudo certinho…mas na seguna exibe isso