fiz um pequeno programa de rede estilo aqueles que tem no “core java”( para 2 ou mais clientes se conectarem simutâneamente ao servidor), só que quando o servidor( programinha servidor ) manda uma mensagem para os clientes( prgraminha cliente ), so atualiza o último cliente( programinha cliente ) que se conectou.
Alguém sabe como posso solucionar esse problema é esse?
quando eu falo programinha cliente e servidor é q se vcs virem no deitel ou no core java, para um programa de rede ele tem a parte cliente( um programa cliente ) e uma parte servidor( programa servidor ).
javinha, se for possível poste o teu código aí, vai ficar mais fácil de ajudarmos.
T+
A
AnonymousPJ
olhe o código aí. Quando eu executo a classe Client_1 2 vezes cada uma(classe Client_1) faz sua conexao ao servidor( Classe Server ) e seu metodo run(classe Client_1), fica executando esperando algum texto do servidor, entao quando servidor manda um texto atraves do metodo output.writeObject() eu acho q era para atualizar nas duas classes Client_1, mas só atualiza na classe que se conectou por último ao servidor.
importjava.io.*;importjava.net.*;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclassServerextendsJFrame{privateJTextAreadisplay;Conexaocon;JTextFieldenter;publicServer(){super("Server");Containerc=getContentPane();enter=newJTextField();enter.setEnabled(true);enter.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){con.sendData(e.getActionCommand());enter.setText("");System.out.println(e.getActionCommand());}});c.add(enter,BorderLayout.NORTH);display=newJTextArea();c.add(newJScrollPane(display),BorderLayout.CENTER);setSize(300,150);show();}publicvoidexecute(){ServerSocketserver;Socketconnection;inti=0;try{server=newServerSocket(5000);display.setText("Servidor esperando conexão\n");while(true){connection=server.accept();display.append("Connection "+i+" received from: "+connection.getInetAddress().getHostName()+'\n');con=newConexao(connection,i++);con.start();System.out.println("solar_2");System.out.println("solar_3");}}catch(IOExceptione){e.printStackTrace();System.exit(1);}catch(Exceptionee){System.out.println("marilia");}System.out.println("sol");}publicstaticvoidmain(Stringargs[]){Serverapp=newServer();app.addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){System.exit(0);}});app.execute();}}classConexaoextendsThread{privateSocketconnection;privateObjectInputStreaminput;privateObjectOutputStreamoutput;privateServercontrol;privateintnumber;protectedbooleanthreadSuspended=true;publicConexao(Sockets,intnum){connection=s;// control = t;number=num;try{input=newObjectInputStream(connection.getInputStream());System.out.println("solar_2014");output=newObjectOutputStream(connection.getOutputStream());output.writeObject("Conectado com sucesso!!!\n");}catch(IOExceptione){e.printStackTrace();System.exit(1);}// control.display( "\nGot I/O streams\n" );System.out.println("solar_2001");}publicvoidrun(){while(true){try{Strings=(String)input.readObject();System.out.println("s = "+s);sendData(s);output.flush();//processMessage(s);}catch(IOExceptione){}catch(ClassNotFoundExceptioncnfex){}}}protectedsynchronizedvoidsendData(Strings){try{//message = s;output.writeObject(s);output.flush();//display.append( "\nCLIENT>>>" + s );}catch(IOExceptioncnfex){// display.append(// "\nError writing object" );}}}
eltonk
Dei uma rápida olhada no teu código, pelo que eu vi, vc está criando objetos con… Talvez um está sobrescrevendo outro… Tente utilizar um array de Conexões, desse modo vc terá como controlar todas as conexões no teu servidor
Vou fazer alguns testes assim que puder… e posto o resultado aqui…
J
jeveauxPJ
Oi
javinha, concordo com o Elton, hj de madrugada 8O , vou dar uma olhada no teu código, se achar o problema eu posto aqui.