Interface.SetAreaTxt("Conectando e iniciando login em "+host+" on port "+port);Stringmsg="LOGIN:USUARIO:SENHA";saida.println(msg);while(connection.isConnected()){Interface.SetAreaTxt(entrada.readLine());Thread.sleep(100);}
Até aqui funciona perfeitamente eu efetuo o login com os dados que enviei, e fico recebendo as informações do servidor.
O problema é que em outra função pertecente a esta classe eu tento enviar outro tipo de informação mas não envia, apesar de não gerar erro nenhum:
public void GetInfo(String Info) throws IOException {
saida.println(Info);
}
Alguém tem idéia do que está acontecendo?
Obrigado.
onde que vc ta criando o servidor socket?
e quando que seu cliente esta se conectando nele?
abaixo segue o codigo de uma classe java que fiz implementando socket, um server para um jogo da velha:
packageServidor;importjava.io.IOException;importjava.io.ObjectInputStream;importjava.io.ObjectOutputStream;importjava.io.Serializable;importjava.net.ServerSocket;importjava.net.Socket;importComunicacao.Jogada;importComunicacao.Nome;importComunicacao.NovoJogo;importComunicacao.Numero;importComunicacao.QuemJoga;importController.Console;importController.ControleJogo;importController.Mensagem;importController.Testes;importModel.PecaO;importModel.PecaX;importModel.Tabuleiro;@SuppressWarnings("serial")publicclassServidorextendsThreadimplementsSerializable{privateObjectInputStreaminput1;privateObjectInputStreaminput2;privateServerSocketservidor;privateSocketsocket1;privateSocketsocket2;privatebooleanconexaoAtiva;privateintporta;privateMensagemmensagem;privateTabuleirotabuleiro;privateStringnomeJogador1;privateStringnomeJogador2;privateintvezJogar;privateintjogadas;publicServidor(intporta)throwsIOException{setPorta(porta);setSocket1(newSocket());setSocket2(newSocket());setConexaoAtiva(false);setTabuleiro(newTabuleiro());setVezJogar(1);}publicvoidrun(){try{createServer();setConexaoAtiva(true);setMensagem(newMensagem());getMensagem().geraMensagemPrograma("Servidor criado na porta: "+getPorta());Console.addMensagem(getMensagem());while(isConexaoAtiva()){if(!getSocket1().isConnected()){setSocket1(getServidor().accept());enviaNumero(newNumero(1),getSocket1());setMensagem(newMensagem());getMensagem().geraMensagemPrograma("Conectado, aguardando outro jogador...");enviaObjetoJogador1(getMensagem());(newThread(){publicvoidrun(){while(isConexaoAtiva()){try{if(getSocket1().getInputStream()!=null){setInput1(newObjectInputStream(getSocket1().getInputStream()));recebeObjeto(getInput1());}}catch(Exceptione){e.printStackTrace();}}}}).start();}else{if(!getSocket2().isConnected()){setSocket2(getServidor().accept());enviaNumero(newNumero(2),getSocket2());setMensagem(newMensagem());getMensagem().geraMensagemPrograma("Jogadores conectados...");enviaObjetoJogador1(getMensagem());enviaObjetoJogador2(getMensagem());(newThread(){publicvoidrun(){while(isConexaoAtiva()){try{if(getSocket2().getInputStream()!=null){setInput2(newObjectInputStream(getSocket2().getInputStream()));recebeObjeto(getInput2());}}catch(Exceptione){e.printStackTrace();}}}}).start();}}try{Thread.sleep(500L);}catch(InterruptedExceptione){e.printStackTrace();}}}catch(Exceptione){e.printStackTrace();}}publicvoidenviaObjetoJogador1(Objectobjeto){if(objeto!=null){try{ObjectOutputStreamob=newObjectOutputStream(getSocket1().getOutputStream());ob.writeObject(objeto);ob.flush();}catch(IOExceptione){e.printStackTrace();}}}publicvoidenviaObjetoJogador2(Objectobjeto){if(objeto!=null){try{ObjectOutputStreamob=newObjectOutputStream(getSocket2().getOutputStream());ob.writeObject(objeto);ob.flush();}catch(IOExceptione){e.printStackTrace();}}}publicvoidrecebeObjeto(ObjectInputStreamob){if(ob!=null){try{Objectobjeto=ob.readObject();if(objetoinstanceofMensagem){Mensagemmsg=(Mensagem)objeto;enviaObjetoJogador1(msg);enviaObjetoJogador2(msg);}if(objetoinstanceofNovoJogo){setTabuleiro(newTabuleiro());enviaTabuleiro(getSocket1());enviaTabuleiro(getSocket2());ControleJogo.setStart(true);setJogadas(0);if(getVezJogar()==1){enviaQuemJoga(newQuemJoga(newPecaX(),getNomeJogador1()),getSocket1());enviaQuemJoga(newQuemJoga(newPecaX(),getNomeJogador1()),getSocket2());}elseif(getVezJogar()==2){enviaQuemJoga(newQuemJoga(newPecaO(),getNomeJogador2()),getSocket1());enviaQuemJoga(newQuemJoga(newPecaO(),getNomeJogador2()),getSocket2());}setMensagem(newMensagem());getMensagem().geraMensagemPrograma("Novo jogo iniciado...");enviaObjetoJogador1(getMensagem());enviaObjetoJogador2(getMensagem());}if(objetoinstanceofJogada){if(ControleJogo.isStart()){Jogadajogada=(Jogada)objeto;if(jogada.getNumero()==getVezJogar()){getTabuleiro().addPecaTabuleiro(jogada.getPeca(),jogada.getX(),jogada.getY());setJogadas(getJogadas()+1);enviaTabuleiro(getSocket1());enviaTabuleiro(getSocket2());Testesteste=newTestes();booleanvencedor=teste.verJogada(getTabuleiro(),jogada.getPeca(),jogada.getX(),jogada.getY());if(!vencedor){if(getJogadas()<9){trocaJogador();if(getVezJogar()==1){enviaQuemJoga(newQuemJoga(newPecaX(),getNomeJogador1()),getSocket1());enviaQuemJoga(newQuemJoga(newPecaX(),getNomeJogador1()),getSocket2());}elseif(getVezJogar()==2){enviaQuemJoga(newQuemJoga(newPecaO(),getNomeJogador2()),getSocket1());enviaQuemJoga(newQuemJoga(newPecaO(),getNomeJogador2()),getSocket2());}}else{setMensagem(newMensagem());getMensagem().geraMensagemPrograma("Jogo terminou empatado!");enviaObjetoJogador1(getMensagem());enviaObjetoJogador2(getMensagem());ControleJogo.setStart(false);trocaJogador();}}else{ControleJogo.setStart(false);setMensagem(newMensagem());getMensagem().geraMensagemPrograma("Jogo acabou, vencedor foi: "+jogada.getNome());enviaObjetoJogador1(getMensagem());enviaObjetoJogador2(getMensagem());trocaJogador();}}}}if(objetoinstanceofNome){Nomenome=(Nome)objeto;if(nome.getNumero()==1){setNomeJogador1(nome.getNome());}elseif(nome.getNumero()==2){setNomeJogador2(nome.getNome());}}}catch(IOExceptione){e.printStackTrace();}catch(ClassNotFoundExceptione){e.printStackTrace();}}else{return;}}publicvoidcreateServer()throwsIOException{setServidor(newServerSocket(getPorta()));}publicvoidenviaNumero(Numeronumero,Socketsocket){try{ObjectOutputStreamsaida=newObjectOutputStream(socket.getOutputStream());saida.writeObject(numero);saida.flush();}catch(IOExceptione){e.printStackTrace();}}publicvoidenviaQuemJoga(QuemJogaquemJoga,Socketsocket){try{ObjectOutputStreamsaida=newObjectOutputStream(socket.getOutputStream());saida.writeObject(quemJoga);saida.flush();}catch(IOExceptione){e.printStackTrace();}}publicvoidenviaTabuleiro(Socketsocket){try{ObjectOutputStreamsaida=newObjectOutputStream(socket.getOutputStream());saida.writeObject(getTabuleiro());saida.flush();}catch(Exceptione){e.printStackTrace();}}publicvoidtrocaJogador(){booleanmudou=false;if(getVezJogar()==1){setVezJogar(2);mudou=true;}if(!mudou){if(getVezJogar()==2){setVezJogar(1);}}}publicObjectInputStreamgetInput1(){returninput1;}publicvoidsetInput1(ObjectInputStreaminput1){this.input1=input1;}publicObjectInputStreamgetInput2(){returninput2;}publicvoidsetInput2(ObjectInputStreaminput2){this.input2=input2;}publicServerSocketgetServidor(){returnservidor;}publicvoidsetServidor(ServerSocketservidor){this.servidor=servidor;}publicSocketgetSocket1(){returnsocket1;}publicvoidsetSocket1(Socketsocket1){this.socket1=socket1;}publicSocketgetSocket2(){returnsocket2;}publicvoidsetSocket2(Socketsocket2){this.socket2=socket2;}publicbooleanisConexaoAtiva(){returnconexaoAtiva;}publicvoidsetConexaoAtiva(booleanconexaoAtiva){this.conexaoAtiva=conexaoAtiva;}publicintgetPorta(){returnporta;}publicvoidsetPorta(intporta){this.porta=porta;}publicMensagemgetMensagem(){returnmensagem;}publicvoidsetMensagem(Mensagemmensagem){this.mensagem=mensagem;}publicTabuleirogetTabuleiro(){returntabuleiro;}publicvoidsetTabuleiro(Tabuleirotabuleiro){this.tabuleiro=tabuleiro;}publicStringgetNomeJogador1(){returnnomeJogador1;}publicvoidsetNomeJogador1(StringnomeJogador1){this.nomeJogador1=nomeJogador1;}publicStringgetNomeJogador2(){returnnomeJogador2;}publicvoidsetNomeJogador2(StringnomeJogador2){this.nomeJogador2=nomeJogador2;}publicintgetVezJogar(){returnvezJogar;}publicvoidsetVezJogar(intvezJogar){this.vezJogar=vezJogar;}publicintgetJogadas(){returnjogadas;}publicvoidsetJogadas(intjogadas){this.jogadas=jogadas;}}
L
lzs
O servidor não foi implementado por mim só o cliente.
Como disse funciona normal, envio os parâmetros para login, recebo confirmação, só não consigo enviar outras strings fora do método Run().
marcosharbs
alem de abrir uma thread para o servidor vc deve abrir uma thread para cada cliente conectado
qdo ele se conecta no servidor vc deve abrir uma thread para ficar num loop recebendo dados daquele cliente, e o cliente também deve estar num loop recebendo informacoes do servidor, tp vc deve extender thread tb no cliente e implementar o metodo run() para que ele fique recebendo informacoes algo tipo:
Acho que você não entendeu, está funcionando corretamente, eu fico no loop recebendo as informações do servidor normalmente…
O que acontece é que não consigo enviar strings para o servidor fora do método Run().