[RESOLVIDO] Erro invalid stream header: 77656C63 com ObjectInputStream

Boa tarde amigos!!! :smiley:

Bom, no episodio de hoje temos o seguinte problema:

Eu to criando um Cliente/Servidor… mas não tenho muita experiência com essa área… E to usando como auxilio o livro do Deitel da 6ª Edição.

Utilizando um exemplo do livro, to tentando fazer a conexão com o servidor da seguinte maneira:

	public Telefone(String server, int porta){
	try {
			cliente = new Socket(server, porta);
			System.out.println("Criou o socket");

			saida = new ObjectOutputStream(cliente.getOutputStream());
			saida.flush();
			System.out.println("Criada a saida");

			entrada = new ObjectInputStream(cliente.getInputStream());
			System.out.println("Criada a entrada");
			recebeInformacoes();
		} catch (UnknownHostException e) {
			System.out.println("Host de conexão não foi encontrado. (UnknownHostException: " + e.getMessage() + ")");
		} catch (IOException e) {
			System.out.println("Falha na obtenção das streams de conexão. (IOException: " + e.getMessage() + ")");
		}
}

private void recebeInformacoes() {
		do{
			try {
				message = (String) entrada.readObject();
				
				if(message.toUpperCase().startsWith("NEWCALL"))
					newCall(message.substring(message.indexOf(" ") + 1));
				
			} catch (IOException e) {
				logger.error("Falha na comunicação com o servidor");
			} catch (ClassNotFoundException e) {
				logger.error("Recebido um objeto desconhecido");
			}
		}while(!message.equals("END"));
	}

E obtenho como saída o seguinte:

Criou o socket Criada a saida Falha na obtenção das streams de conexão. (IOException: invalid stream header: 77656C63)

Dei uma garimpada no google e não encontrei alguma coisa que me auxiliasse da forma que eu gostaria… e até achei um topico aqui no GUJ dizendo pra não usar o ObjectInputStream mas o abençoado não deu a resposta :frowning:

Alguem tem uma :idea: de como resolver essa treta?

Que header estranho - convertendo para Ascii eu tenho os caracteres “Welc”

OPA

Como eu disse eu não sei por onde começar a depurar essa bagaça…

Mas quando eu conecto no servidor, eu recebo a mensagem de WELCOME

Eu tenho que dizer pro cara que fez o server não me mandar nenhuma informação antes de eu coletar os streams ou eu tenho que receber os dados de outra forma, ou em outro lugar?

Você não estudou o protocolo do servidor, não é?

Então entanglement , a resposta da sua pergunta é “não”… rsrsrs

Mas, teoricamente, deveria ter sido implementado em Java… não fui eu que fiz…

O que eu devo analizar especificamente?

Obs.: To saindo agora, amanhã leio sua resposta e continuamos com isso… Mas, desde já, MUITO OBRIGADO PELA AJUDA!!! :smiley:

Você precisa da documentação do protocolo do servidor. Não tem o que estudar; talvez você tenha de ler algum código do servidor. Provavelmente o cara não usou ObjectInput/OutputStream, exatamente pelas razões que o Thingol já explicou nesse tal post que você citou.

OK… eu entendi que não é legal usar ObjectInputStream

Mas o que usar no lugar dele?

Você viu o que o carinha que escreveu a parte do servidor usou? Use o contrário que ele usou. Por exemplo, se ele usou um DataOutputStream encapsulado por um SocketOutputStream, use então um DataInputStream encapsulado por um SocketInputStream. OK?

OK!!!

Cara, MUITO OBRIGADO!!! :!:

Aprendi mais um pouco de Java hj :smiley: