package chapter2.recipe4; import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.Channel; import io.netty.channel.ChannelOption; import io.netty.channel.EventLoopGroup; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.nio.NioServerSocketChannel; public class MultiSocketServer { static String host = "localhost:8080"; public final static String DEFAULT_CLASSPATH = "rfx"; public final static String SERVER_INFO_VERSION = "RfxS2Http/0.1"; int port; String ip; static boolean debug = false; public final static void setDebug(boolean debug) { MultiSocketServer.debug = debug; } public final static boolean isDebug() { return debug; } void setHost(String ip, int port) { this.port = port; this.ip = ip; host = this.ip+":"+port; } public MultiSocketServer(String ip, int port) { setHost(ip, port); } public static String getHost() { return host; } public void run() throws Exception { // Configure the server. EventLoopGroup bossGroup = new NioEventLoopGroup(8); EventLoopGroup workerGroup = new NioEventLoopGroup(8); try { //public service processor ServerBootstrap publicServerBootstrap = new ServerBootstrap(); publicServerBootstrap.group(bossGroup, workerGroup).channel(NioServerSocketChannel.class); publicServerBootstrap.childOption(ChannelOption.TCP_NODELAY, false) .childOption(ChannelOption.SO_KEEPALIVE, false); //FIXME //.childHandler(new PublicHttpServerInitializer()); //bind to public access host info Channel ch1; if("*".equals(ip)){ ch1 = publicServerBootstrap.bind(port).sync().channel(); } else { ch1 = publicServerBootstrap.bind(ip, port).sync().channel(); } System.out.println(String.format("Started OK HttpServer at %s:%d", ip, port)); ch1.config().setConnectTimeoutMillis(1800); ch1.closeFuture().sync(); System.out.println("Shutdown..."); } catch (Throwable e) { e.printStackTrace(); System.exit(1); } finally { bossGroup.shutdownGracefully(); workerGroup.shutdownGracefully(); } } public static void main(String[] args) throws Exception { MultiSocketServer httpServer = new MultiSocketServer("*", 3001); httpServer.run(); } }