Boa tarde,
estou precisando muito de ajuda, pois ja quebrei a cabeça o dia todo para fazer funcionar o socket com ObjectOutputStream.
Porém agora tem um problema que realmente nao consegui descobrir a causa:
ObjectInputStream in = new ObjectInputStream(socket.getInputStream());
Para testar, criei uma classe no cliente e 2 no server.
Essas classes nao trocam objetos, eu só estabeleci a conexão e coloquei um sleep, para não complicar.
public class TesteChamada {
public static String hora() {return new SimpleDateFormat("hh:mm:ss").format(new Date()) + " ";}
public static void main(String args[]) throws IOException, ClassNotFoundException {
Socket socket = new Socket("localhost", 12000);
ObjectInputStream in = new ObjectInputStream(socket.getInputStream());
ObjectOutputStream out = new ObjectOutputStream(socket.getOutputStream());
//sending an object
try {
Thread.sleep(0000);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(hora()+"fechou conexao");
//closing connection
in.close();
out.close();
socket.close();
}
}
public class TesteServer {
public static void main(String[] args) throws IOException, ClassNotFoundException {
ServerSocket serverSocket = new ServerSocket(12000);
System.out.println(new SimpleDateFormat("hh:mm:ss").format(new Date()) + " Server - Iniciado, serverSocket: " + serverSocket);
Ouvidor ouvidor = new Ouvidor(serverSocket);
Thread pilha = new Thread(ouvidor);
pilha.start();
}
}
public class Ouvidor implements Runnable {
private ServerSocket serverSocket;
public Ouvidor(ServerSocket serverSocket) {
this.serverSocket = serverSocket;
}
public void run() {
while (true) {
try {
Socket socket = serverSocket.accept(); //recebe nova conexao
System.out.println("recebeu conexao, socket: " + socket);
ObjectOutputStream out = new ObjectOutputStream(socket.getOutputStream());
ObjectInputStream in = new ObjectInputStream(socket.getInputStream());
try {
Thread.sleep(50000);
} catch (Exception e) {
e.printStackTrace();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {}
}
}
}
Por favor, alguem sabe se só dá para instanciar um objeto ObjectOutputStream ou ObjectInputStream, de cada vez na máquina?
Olha, como já disse, passei o dia todo só para conseguir chegar até aqui, e já li o "http://docs.oracle.com/javase/1.4.2/docs/api/java/io/ObjectOutputStream.html".