Verificando Objeto

2 respostas
N

Boa Tarde Pessoal,

Estou o meu problema é o seguinte: estou trabalhando com socket na faculdade, só que tenho uma estrutura e nela eu preciso verificar o que eu estou recebendo nesse socket, Se é um objeto ou se é uma String.

Alguém já viu isso?

package control;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import model.Ficheiro;

/**
 *
 * @author Júlio
 */
public class Servidor {
    private ServerSocket server;
    private Socket socket;
    private ObjectInputStream in;
    private ObjectOutputStream out;
    
    public Servidor() {
        try {
            this.server = new ServerSocket(1398);
            JOptionPane.showMessageDialog(null, "Aberto a conexões", "Conexão", JOptionPane.INFORMATION_MESSAGE);
            socket = server.accept();
        } catch (IOException ex) {
            Logger.getLogger(Servidor.class.getName()).log(Level.SEVERE, null, ex);
        }
        
    }
    
    public void received(){
        while(true){
            Ficheiro ficheiro = null;
            try {
                in = new ObjectInputStream(socket.getInputStream());
                Object object = (Object) in.readObject();
                if (object.equals(ficheiro)){
                     ficheiro = (Ficheiro) in.readObject();
                     gravarArquivo(ficheiro);
                }else{
                    selecionarArquivo(String.valueOf(in.readObject()));
                }
                out = new ObjectOutputStream(socket.getOutputStream());
                out.writeObject("Recebido");
                socket.close();
                socket = server.accept();
            } 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);
            }
            
        }   
    }
    
    public void gravarArquivo(Ficheiro ficheiro){
        String caminho = "c:/Users/Júlio/Desktop/"+ficheiro.getDescricao()+".fgrw";
        try {
            FileOutputStream arquivo = new FileOutputStream(caminho);
            ObjectOutputStream obj = new ObjectOutputStream(arquivo);
            obj.writeObject(ficheiro);
            obj.flush();
            obj.close();
            arquivo.flush();
            arquivo.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    public void selecionarArquivo(String nomeArquivo){
        File file = new File("c:/Users/Júlio/Desktop/"+nomeArquivo+".fgrw");
        if(file.exists()){
            try {
                out = new ObjectOutputStream(socket.getOutputStream());
                out.writeObject(file);
            } catch (IOException ex) {
                Logger.getLogger(Servidor.class.getName()).log(Level.SEVERE, null, ex);
            }
        } else {
        }
    }
    
    public static void main(String []args){
        Servidor server = new Servidor();
        server.received();
    }
}

2 Respostas

RoxRicardo

Amigo, não entendi exatamente o seu problema, atualmente acontece algum erro ou algo do tipo?

Pelo que consegui perceber você quer checar na linha 42 se o atributo recebido é um String ou um objeto, se a variável está como Object você pode utilizar o seguinte código.

if (object instanceof String){ //execute algo } else { // Neste caso é qualquer coisa menos String }

N

Valeu fera, deu certo o código.

Criado 16 de setembro de 2013
Ultima resposta 18 de set. de 2013
Respostas 2
Participantes 2