Criando um socket não bloqueante

Aprenda como criar um socket que não fica esperando eternamente pelo estabelecimento da conexão.

Criando um socket não bloqueante

Este exemplo mostra como cirar um socket não bloqueante. Para que seja possível a criação deste socket, é necessário um canal de comunicação para ele.

  // Cria um canal de socket não bloqueante para um host e uma porta específica.
  // connect() é chamando no novo canal antes dele retorna.
  public static SocketChannel createSocketChannel(String hostName, int port) throws IOException {
        // Cria um canal de socket não bloqueante
SocketChannel sChannel = SocketChannel.open(); sChannel.configureBlocking(false); // Envia o pedido de conexão para o servidor; este método é não bloqueante sChannel.connect(new InetSocketAddress(hostName, port)); return sChannel; }
    // Cria um socket não bloqueante e faz a verificação por conexões
    try {
        // Cria um canal de socket não bloqueante na porta 80
        SocketChannel sChannel = createSocketChannel("hostname.com", 80);
    
        // Antes do socket ser utilizado, a conexão deve ser efetuada
        // através da chamada de finishConnect(), que é um método não bloqueante
        while (!sChannel.finishConnect()) {
            // Fazer algo enquanto a conexão não estiver estabelecida
        }
        // Canal de socket está pronto para ser usado
    } catch (IOException e) {
    }

 

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados