1. 程式人生 > >Netty入門例項及分析

Netty入門例項及分析

import java.net.InetSocketAddress;
import java.util.concurrent.Executors;

import org.jboss.netty.bootstrap.ServerBootstrap;
import org.jboss.netty.channel.Channel;
import org.jboss.netty.channel.ChannelFactory;
import org.jboss.netty.channel.ChannelPipeline;
import org.jboss.netty.channel.ChannelPipelineFactory;
import org.jboss.netty.channel.Channels;
import org.jboss.netty.channel.group.ChannelGroup;
import org.jboss.netty.channel.group.ChannelGroupFuture;
import org.jboss.netty.channel.group.DefaultChannelGroup;
import org.jboss.netty.channel.socket.nio.NioServerSocketChannelFactory;

public class TimeServer {
	public static ChannelGroup allChannels = new DefaultChannelGroup("time-server");
	
	public static void main(String[] args) {
		ChannelFactory factory = new NioServerSocketChannelFactory(
				Executors.newCachedThreadPool(),
				Executors.newCachedThreadPool());
		
		ServerBootstrap bootstrap = new ServerBootstrap(factory);
		bootstrap.setPipelineFactory(new ChannelPipelineFactory() {
			@Override
			public ChannelPipeline getPipeline() throws Exception {
				return Channels.pipeline(new TimeServerHandler2(),
										 new TimeEncoder());
			}
		});
		
		bootstrap.setOption("reuseAddr", true);
		bootstrap.setOption("child.tcpNoDelay", true);
		bootstrap.setOption("child.keepAlive", true);
		
		Channel channel = bootstrap.bind(new InetSocketAddress(8080));
		
		allChannels.add(channel);
		//waitForShutdownCommand();  this is a imaginary logic:for instance 
		//when there is accepted connection we close this server ;
		if(allChannels.size() >=2){
			ChannelGroupFuture f = allChannels.close();
			f.awaitUninterruptibly();
			factory.releaseExternalResources();
		}
	}
}


相關推薦

Netty入門例項分析

import java.net.InetSocketAddress; import java.util.concurrent.Executors; import org.jboss.netty.bootstrap.ServerBootstrap; import org.jboss.netty.channel

Netty入門例項教程

因為接下來的專案要用到netty,所以就瞭解一下這個程式,奈何網上的教程都是稍微有點基礎的,所以,就寫一篇對於netty零基礎的,順便也記錄一下。 先扔幾個參考學習的網頁:  關於NIO基礎的知識:https://my.oschina.net/an

dubbo入門例項效能測試

ubbo叢集和非duboo(在同一jvm內執行)效能對比程式碼下載地址: http://download.csdn.net/detail/lk_blog/9507435 使用例項測試注意事項: 1.下載zookeeper  地址: http://zookeeper.apa

Springmvc+Apache Camel+Mybatis整合例項分析

Spring MVC+Apache Camel+Mybatis整合例項及分析 最近在學習camel,公司之前做過的專案使用到了camel進行了很多工作。就連資料庫的操作也是通過camel來完成的。至於用camel來操作資料庫有什麼優點,目前就我自己的體會來說,利用came

Java GC 分析,JVM生產環境引數例項分析,JVM詳細配置

什麼是 Java GC Java GC(Garbage Collection,垃圾收集,垃圾回收)機制,是Java與C++/C的主要區別之一,作為Java開發者,一般不需要專門編寫記憶體回收和垃圾清理程式碼,對記憶體洩露和溢位的問題,也不需要像C程式設計師那樣戰戰兢兢。這是

JVM系列四:生產環境引數例項分析

java application專案(非web專案) 改進前: -Xms128m-Xmx128m-XX:NewSize=64m-XX:PermSize=64m-XX:+UseConcMarkSweepGC-XX:CMSInitiatingOccupancyFraction=78-XX:ThreadStac

Netty入門(一)環境搭建使用

一、專案建立   在 Eclipse 中右鍵,新建->專案->Maven->Maven Project->下一步->選擇 quickstart      下一步->設定如圖(引數自取)      點選完成。    專案會自動建立

netty入門HttpServer例項

好久沒更了,由於目前專案要用到websocket,於是看了下netty。Netty是由JBOSS提供的一個java開源框架。Netty提供非同步的、事件驅動的網路應用程式框架和工具,用以快速開發高效能、高可靠性的網路伺服器和客戶端程式。 也就是說,Netty 是一個基於NIO的客戶、伺服器端程式設計

spring security 5.x 入門分析

Java Web專案的許可權管理框架,目前有兩個比較成熟且使用較多的框架,Shiro 和 Spring Security ,Shiro 比 Spring Security更加輕量級,但是需要手動配置的東西較多,Spring Security 和 Spring 整合更好,甚至直

java:MapReduce原理入門例項:wordcount

MapReduce原理 MapperTask -> Shuffle(分割槽排序分組) -> ReducerTask MapReduce執行步驟 Map處理任務 讀取檔案每一行,解析成<key、value>,呼叫

Spark+ECLIPSE+JAVA+MAVEN windows開發環境搭建入門例項【附詳細程式碼】

前言 本文旨在記錄初學Spark時,根據官網快速入門中的一段Java程式碼,在Maven上建立應用程式並實現執行。 首先推薦一個很好的入門文件庫,就是CSDN的Spark知識庫,裡面有很多spark的從入門到精通的形形色色的資料, 1.開發軟體恭喜你,拿到spark駕考

證書的應用之一 —— TCP&SSL通訊例項協議分析(中)

SSL建立握手連線目的: 1.身份的驗證,client與server確認對方是它相連線的,而不是第三方冒充的,通過證書實現 2.client與server交換session key,用於連線後資料的傳輸加密和hash校驗 簡單的SSL握手連線過程(僅Ser

Thrift入門初探--thrift安裝java入門例項

  公司的一些平臺服務框架底層封裝了thrift提供服務,最近專案不是很緊,於是研究了一下,剛剛入門,理解得不深,寫這篇博文來整理一下思路. 什麼是thrift?   簡單來說,是Facebook公佈的一款開源跨語言的RPC框架.   那麼問題來了.   什麼是RPC框架?

微信小程式入門教程例項

原文地址:https://mp.weixin.qq.com/s?__biz=MzAwNjI5MTYyMw==&mid=2651493295&idx=1&sn=4dc4c570140d246b5ead8eb0c01d90d9&chksm=80

推薦初學者Java Web入門筆記例項

在Java Web的學習過程中,參考了很多資料書以及例程,這裡整理了JSP、Servlet、JavaBean的入門基礎知識以及資料庫基本操作例項和初學者進行分享。整個過程力求由淺入深,多動手實踐,先有感性的認識再逐步學習完善相關理論。 對於比較抽象的Servl

通過例項原始碼分析關於SpringBoot啟動類啟動時自動配置問題

SpringBoot啟動類大家都不陌生,只要在main方法上增加一個@SpringBootApplication註解,就可以啟動了。 我們點開該註解 其中關鍵註解為@EnableAutoConfiguration,再次跟進 其中引入了EnableA

Mockito入門例項完整介紹

回到官網:http://mockito.org/,開啟documentation可以看到原文。 強烈建議不熟悉Mockito的同學先看看我寫的Mockito(一)入門篇和(二)例項篇之後再來看這篇文章。 因為只有看了前兩篇文章才明白mockito的本質以及該如何使用它。 下面是按原文 翻譯+註釋 的對

Java的Inner Class的例項作用分析

1 首先看程式碼 /**//* * DataStructure.java * * Created on 2008年3月1日, 上午10:37 * * To change this template, choose Tools | Template Manager * a

npm的安裝Vue.js2.0從入門到放棄---入門例項(一)

下載地址:http://nodejs.cn/download/ https://nodejs.org/en/download/  兩者都可以安裝node.js從node.js官網下載並安裝node,安裝過程很簡單,一路“下一步”就可以了(傻瓜式安裝)。安裝完成之後,開啟命令列

Netty入門和實踐】1.傳統的socket分析

我們知道,使用Java進行TCP/UDP協議的網路通訊一般使用Java的Net包下的Socket服務進行編寫,有Server服務端和Client客戶端,服務端用於監聽客戶端的連線和接收客戶端發來的資訊,而客戶端可以接收服務端傳送的資訊,形成多個客戶端與一個服務端連線,各個客戶