Estou aprendendo a usar Socket e tenho uma dúvida.
Estou fazendo um programa tipo cliente servidor.
Quando eu faço a conexão (serverSocket.accept()) eu recebo um Socket.
Na classe cliente eu mando um objeto, e o meu server recebe, tudo certo até então.
O código está abaixo.
Servidor:
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Servidor extends Thread{
/**
* @param args
*/
public static void main(String[] args) {
new Servidor();
}
public Servidor()
{
ServerSocket server;
try {
server = new ServerSocket(1234);
Socket s = server.accept();
while(true)
{
InputStream ss = s.getInputStream();
ObjectInputStream o = new ObjectInputStream(ss);
System.out.println(o.readObject());
}
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Cliente
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class Cliente {
/**
* @param args
*/
public static void main(String[] args) {
try {
Socket s = new Socket("127.0.0.1", 1234);
ObjectOutputStream o = new ObjectOutputStream(s.getOutputStream());
o.writeObject("hahahaha");
o.flush();
o.writeObject("233222");
o.flush();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
O problema é que eu não sei se existe algum método de deixar a Thread do Servidor em “wait”, esperando que o cliente mande algum objeto.
Qual seria o jeito mais efetivo, ao invez de ficar usando Thread.sleep() ou um loop infinito que fica dando erro direto?
Obrigado