Estou tentando fazer uma comunicação cliente/servidor por Socket. Criei um JFrame que envia para o servidor uma determinada palavra e quando o servidor recebesse esta msg ele retornaria para o cliente avisando que tinha recebido.
Eu consigo enviar do cliente para o servidor uma msg, o problema é quando eu tento enviar do servidor para o cliente. Quando vou rodar o JFrame, ela simplesmente não abre.. verifiquei então que quando eu comento a linha que eu instancio o input (ObjectInputStream) na classe cliente, a frame roda di boa
Cliente:
public class Cliente {
private ObjectInputStream input;
private ObjectOutputStream output;
public Cliente(){
try {
Socket socket = new Socket("localhost", 1234);
input = new ObjectInputStream(socket.getInputStream()); // quando eu comento aqui
output = new ObjectOutputStream(socket.getOutputStream());
} catch (UnknownHostException ex) {
Logger.getLogger(Cliente.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(Cliente.class.getName()).log(Level.SEVERE, null, ex);
}
}
public ObjectInputStream getInput(){
return input;
}
public ObjectOutputStream getOutput(){
return output;
}
}
JFrame:
private Cliente cl = new Cliente();
..
private void jButtonActionPerformed(java.awt.event.ActionEvent evt) {
try {
cl.getOutput().writeObject("Teste");
} catch (IOException ex) {
Logger.getLogger(Sist.class.getName()).log(Level.SEVERE, null, ex);
}
}
..
public void run() {
Object obj;
try {
while((obj = cl.getInput().readObject()) != null){
System.out.println("recebeeeeeeeu");
}
} catch (IOException ex) {
Logger.getLogger(Sist.class.getName()).log(Level.SEVERE, null, ex);
} catch (ClassNotFoundException ex) {
Logger.getLogger(Sist.class.getName()).log(Level.SEVERE, null, ex);
}
}
Servidor:
public class Servidor implements Runnable{
public ObjectInputStream input;
public ObjectOutputStream output;
public Servidor(Socket socket){
try {
input = new ObjectInputStream(socket.getInputStream());
output = new ObjectOutputStream(socket.getOutputStream());
} catch (IOException ex) {
Logger.getLogger(Servidor.class.getName()).log(Level.SEVERE, null, ex);
}
}
@Override
public void run() {
Object obj;
String a = "erick";
try {
while((obj = input.readObject()) != null){
if(obj.equals("Teste")){
System.out.println("Recebido");
File file = new File("E:\Teste Socket\1.jpg");
//System.out.println(file);
output.writeObject(file);
}
}
} catch (IOException ex) {
Logger.getLogger(Servidor.class.getName()).log(Level.SEVERE, null, ex);
} catch (ClassNotFoundException ex) {
Logger.getLogger(Servidor.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
Tambem verifiquei que quando eu paro de rodar o servidor, a frame abre mas gera o erro devido ao serversocket ta fechado. Ele trava em algum lugar agora não sei onde =\