package com.jenkov.nioserver; import java.io.IOException; import java.net.InetSocketAddress; import java.nio.channels.ServerSocketChannel; import java.nio.channels.SocketChannel; import java.util.Queue; /** * Project: java-nio-server
* File: SocketAcceptor.java
* Created: 19 Oct 2015
* * @author jjenkov */ public class SocketAcceptor implements Runnable { private int tcpPort; private ServerSocketChannel serverSocket; private Queue socketQueue; public SocketAcceptor(int tcpPort, Queue socketQueue) { this.tcpPort = tcpPort; this.socketQueue = socketQueue; } public void run() { try { serverSocket = ServerSocketChannel.open(); serverSocket.bind(new InetSocketAddress(tcpPort)); } catch (IOException e) { e.printStackTrace(); return; } while (true) { try { SocketChannel socketChannel = serverSocket.accept(); System.out.println("Socket accepted: " + socketChannel); // TODO: check if the queue can even accept more sockets. this.socketQueue.add(new Socket(socketChannel)); } catch (IOException e) { e.printStackTrace(); } } } }