Conexão de clientes com socket

5 respostas
programaçãojava
LooKs

Oi, estou com um problemas em fazer com que vários clientes se conectem em um servidor, sendo que eu tenho que de algum modo conseguir capturar a conexão.

public static Socket servidor() throws IOException{
    
        ServerSocket servidor = new ServerSocket(8080);
        while(true){
            try{
                JOptionPane.showMessageDialog(null, "Estou esperando uma conexão");

                conexaoCliente = servidor.accept();
                JOptionPane.showMessageDialog(null, "Estou conectato");
                System.out.println("O cliente" + conexaoCliente.getInetAddress().getHostAddress()+" esta conectado");
                retorno = conexaoCliente;
            }catch(IOException e){}
        }
        return conexaoCliente;
    }

estou tentando fazer o cliente se conectar e quando ele conecta eu capturo a conexão e retorno essa conexão para um método.

5 Respostas

M

Ao executar a linha

“LooKs:

conexaoCliente = servidor.accept();

A aplicação vai ficar escutando na porta 8080 e a execução vai congelar e ficar em modo listner até que alguem reposnda.

Assim que alguem conectar o processamento vai continuar. A partir daí você vai precisar dar um

servidor.bind(“outra porta”);

Para que ele libere a porta 8080 para que alguem possa se conectar novamente.

LooKs

eu quero manter todos na mesma conexão, apenas quero que mais de um cliente se conecte na porta e que eu consiga capturar a conexão de todos

M

Uma vez que um usuário conectou a porta 8080 vai ficar ocupada e ninguem mais irá conseguir conectar. Por isso o bind.

Ele só vai mudar a porta que está em uso para que você possa liberar a 8080 para outras pessoas se conectarem.

Nota: Após isto você precisa executar o método accept() novamente para que ele volte a escutar.

LooKs

agora entendi, mas como eu vou conseguir pegar a conexão ?

M

Objeto conexaoCliente é a conexão em si.
Você pode passa-la para uma Thread ou método e fazer o que tiver que fazer com ela.

Criado 30 de março de 2017
Ultima resposta 30 de mar. de 2017
Respostas 5
Participantes 2