This repository has been archived on 2021-12-05. You can view files and clone it, but cannot push or open issues or pull requests.
java-nio-server/src/main/java/com/jenkov/nioserver/SocketAcceptor.java

51 lines
1.2 KiB
Java

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: <strong>java-nio-server</strong><br>
* File: <strong>SocketAcceptor.java</strong><br>
* Created: <strong>19 Oct 2015</strong><br>
*
* @author jjenkov
*/
public class SocketAcceptor implements Runnable {
private int tcpPort;
private ServerSocketChannel serverSocket;
private Queue<Socket> socketQueue;
public SocketAcceptor(int tcpPort, Queue<Socket> 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();
}
}
}
}