ServerSocket

4 respostas
S

Olá pessoal,

Estou com problema com minha conexão Socket. O programa implementado é bem simples: um servidor que aguarda a conexão de um cliente.

No meu programa, quando eu clico no botão “Aguardar Conexão”, um ActionEvent é detectado e o método actionPerformed é chamado… e dentro desse método eu faço uma chamada ao método accept() da classe ServerSocket. Mas esse método accept() trava até que o cliente se conecte, ou seja, enquanto o cliente não se conectar a janela não é redesenhada (se por exemplo, eu minimizar e maximizar a janela, ela fica toda cinza, e não é possível ver os componentes swing).
Como eu posso resolver esse problema, e atualizar a janela, enquanto o servidor aguarda a conexão?

Obrigado!!!

4 Respostas

G

[color=“red”][size=“9”]* Movido para: Segurança / Redes[/size][/color]

S

Nínguém nunca fez um programa que, ao clicar em um botão conectar, o programa aguarda uma conexão de um cliente?

Obrigado

I

Isso ocorre porque a Thread principal fica esperando a resposta da conexão para seguir a execução do programa congelando a mesma. Para resolver isto é bem simples, basta criar uma Thread para a conexão e deixar o processo principal continuar a execução. Algo assim:

public void actionPerformed(final ActionEvent ae) {
    final Object source = ae.getSource();
    if (source.equals(btnConnect)) {
        connect();
    }
}

private void connect() {
    final Thread t = new Thread() {
        public void run() {
            openSocket();
        }
    };
    t.start();
}

Seja um pouco mais educado ao pedir ajuda. T+

S

Olá! Obrigado pela ajuda, e desculpe se não fui muito educado.

T+ e obrigado mais uma vez!

Criado 12 de dezembro de 2006
Ultima resposta 15 de dez. de 2006
Respostas 4
Participantes 3