Galera, estou fazendo um projeto bem simples pra faculdade, porem estou tendo problemas com relação a codigo,
o projeto cria um servidor para multiplas conexoes, por enquanto só recebe mensagens. mas é o que me interessa, sem retorno para os clientes…
o problema ocorre quando os clientes tentam enviar mais de uma mensagem. ocorre o seguinte erro:
java.io.StreamCorruptedException: invalid stream header: 7371007E
Segue abaixo o codigo:
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.util.Scanner;
CLIENTE
public class ClienteMarcio1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
try {
System.out.println("Tentando se conectar !");
Socket socket = new Socket("localhost",2012);
System.out.println("Conectado");
ObjectOutputStream saida = new ObjectOutputStream(socket.getOutputStream());
String mensagem = null;
while(mensagem != "EXIT"){
System.out.println("Entre com uma mensagem");
mensagem = sc.nextLine();
Mensagem msg = new Mensagem(mensagem);
saida.writeObject(msg);
saida.flush();
}
} catch(IOException cause){
System.out.println("I/O > " + cause);
}
}
}
SERVIDOR
import java.io.IOException;
import java.io.ObjectInputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class ServidorMarcio extends Thread {
Socket connection;
String usuario;
String msgRecebida;
public ServidorMarcio(Socket connection) {
this.connection = connection;
}
public ServidorMarcio() {
ServerSocket server;
try {
server = new ServerSocket(2012);
while (true) {
System.out.println("Aguardando...");
Socket socket = server.accept();
System.out.println("Novo usuário conectado!");
Thread t = new ServidorMarcio(socket);
t.start(); // inicia o metodo RUN da Classe Instanciada na
// Thread
}
} catch (IOException cause) {
cause.printStackTrace();
}
}
public void run() {
try {
while(true){
ObjectInputStream entrada = new ObjectInputStream(connection.getInputStream());
Mensagem msg = (Mensagem) entrada.readObject();
msg.printInfo();
}
}catch (IOException cause){
System.out.println("I/O > " + cause);
} catch(ClassNotFoundException cause){
System.out.println("N/F > " + cause);
}
}
}
SERIALIZAÇÃO
import java.io.Serializable;
public class Mensagem implements Serializable {
String mensagem = null;
public Mensagem(String mensagem) {
this.mensagem = mensagem;
}
public void printInfo(){
System.out.println(mensagem);
}
}
Ignorem a nomeclatura pois o projeto ainda nem implementa O.O.
Grato desde já