Converter um dado que é enviado pelo stream de entrada para String

4 respostas
Sidneyassis

Eu estou com um problema assim, estou fazendo um projeto onde eu utilizo sockets para enviar dado para a aplicação servidor, eu estou conseguindo enviar e receber dados, eu consigo imprimir o dado no console mas eu queria guardar a mensagem que eu recebo do cliente em uma variavel do tipo String, eu até consigo armazenar o valor , mas eu armazeno um código indecrifravel em vez da mensagem correta.

Sege parte do código para analise,

Obrigado.

public static void Conecta(String IP) throws Exception{

		//Cria o socket com o recurso desejado na porta especificada
		s = new Socket(IP, 7000);

		//Cria a Stream de saida de dados
		ps = new PrintStream(s.getOutputStream());

		// Cria um BufferedReader para o canal da stream de entrada de dados do socket s
		entrada = new BufferedReader(new InputStreamReader(s.getInputStream()));
		
		
		//***************************************************************************

TCliente.message = entrada.toString(); <— [color=red]Aqui eu armazeno o dado da entrada de dados.[/color]
//***************************************************************************

[b]		System.out.println(TCliente.message); <-- [color=red]Aqui sai a mensagem codificada(java.io.BufferedReader@148662)[/color][/b]
		
		[b]//Imprime uma linha para a stream de saída de dados
		ps.println(TCliente.msg);<- [color=red]Aqui sai a mensagem normal.[/color][/b]

		////Aguarda por algum dado e imprime a linha recebida quando recebe
		System.out.println(entrada.readLine());

}

4 Respostas

davidbuzatto

Vc ta usando toString pq? Vc sobrescreveu o toString da sua classe para q ela retorne o que vc realmentre quer? Ta aparecendo esse “código” pq o toString utilizado é o herdado de Object.

Vc precisa criar um método no entrada (o umesmo sobrecrever toString) para que a mensagem correta seja retornada.

Falow!

Sidneyassis

Opa David,

Na verdade eu estava testando todos os métodos da classe
java.io.BufferedReader, por isso o toString, eu até tentei usar TCliente.message = [color=red]entrada.readLine()[/color] mas ele nao funfou, vc disse para eu criar um método na entrada mas eu não sei como eu posso fazer esse método, se vc souber como me ajudar, pls

Abraços

Baldao

O que acontece quando vc chama TCliente.message = entrada.readLine()?

Sidneyassis

Baldão, quando eu coloco isso a aplicação fica processando, sabe naqueles casos onde vc faz looping infinito e ele fica “Rolando” sem parar, é isso que acontece quando eu coloco dessa maneira…hehehhehe

Criado 23 de abril de 2007
Ultima resposta 23 de abr. de 2007
Respostas 4
Participantes 3