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) { }