Problemas com Socket[RESOLVIDO]

Galera estou com um problema ao tentar enviar mensagem via Socket. Basicamente estou usando um JFrame principal, um JFrame conexão, e uma classe Conexão_Socket, onde é criado o Socket para conexão e também métodos como Write() Read(). Acontece que depois que eu crio o objeto Conexão_Socket no JFrame conexão, e realizo a conexão através desse objeto, eu só consigo enviar e receber mensagens no JFrame conexão. Mesmo que eu crio outro objeto Conexao_socket em outro JFrame não da certo, da um erro : Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException. Alguém pode me dar uma luz por favor ?

O erro não é por causa de thread nem socket. Deu um null pointer exception, só isso. Você está errando na hora de passar os objetos de um lugar pra outro.

Cadê o código? Tenta deixar o código o mais enxuto possível, tira as coisas que não tem nada a ver com o problema. Assim fica mais fácil ajudar.

public class Socket {

    private java.net.Socket S;
    private BufferedReader bin;
    private BufferedWriter bout;
    private PrintStream pout;
    private int indLinha;



    public Boolean connected(){
        return this.S.isConnected();
    }
    
    public boolean desconected(){
        return this.S.isClosed();
    }

    public void write(final String st){
         this.pout.println(st);
    }
    

    public String Read() throws IOException, InterruptedException {
        String buf ="";
        while (!this.bin.ready()) {
        }
        //Thread.sleep(500L);
        buf = this.bin.readLine();
        return buf;
    }

    public void connect(final String st, final int porta) throws UnknownHostException, IOException {
        this.S = new java.net.Socket(st, porta);
        this.bin = new BufferedReader(new InputStreamReader(this.S.getInputStream()));
        this.bout = new BufferedWriter(new OutputStreamWriter(this.S.getOutputStream()));
        this.pout = new PrintStream(this.S.getOutputStream());
    }

    public void disconnect() throws UnknownHostException, IOException {
        this.pout.flush();
        this.bout.close();
        this.bin.close();
        this.S.close();
    }
}

JFrame1:

public class JFrame1 extends javax.swing.JFrame {

    Socket conexaoSocket = new Socket(); // Classe Socket do mesmo pacote.
    
    public JFrame1() {
        initComponents();
    }

    public void Conectar(){
        conexaoSocket.connect(txtIp.getText(), Integer.parseInt(txtPorta.getText()));
    }
    
    public void Comandos(){
        conexaoSocket.write(txtComando.getText());
        String res = conexaoSocket.Read();
        JOptionPane.showMessageDialog(this, res);
    }
}

No JFrame2 eu só tenho o método Comandos(), porem se a conexão é feita pelo JFrame1 não funciona !!

Você quer compartilhar o mesmo socket entre os dois JFrames? Se sim, tem que usar o mesmo objeto.

Caso um crie o outro, o pai pode criar e passar o objeto pro filho.

Caso eles sejam independentes, tem que haver alguma outra classe que cria os dois, e então essa classe pode criar o socket e passar para os dois JFrame.

Depende do que você está tentando fazer.

Sim, quero compartilhar o Socket entre os JFrames, usar o mesmo objeto !!

Aonde você cria os JFrames? Cria o socket lá e passar pro construtor dos JFrames.

Deu certo !! Obrigado Ivbarbosa, me falaram em outro tópico que tinha a ve com Thread :roll_eyes: , mas obrigado!!