顯示具有 Socket 標籤的文章。 顯示所有文章
顯示具有 Socket 標籤的文章。 顯示所有文章

2015年10月1日 星期四

Netty in Action

最近接觸到了Netty才知道原來有所謂的NIO的需求。雖然知道有NIO,但其實一直不知道它的內容是什麼,又用在什麼地方。好奇心不足,看來是在下非常嚴重的缺點。不過我也自行研究了人臉辨識的技術,比如像OpenIMAJ等,所以有興趣的東西,在下還是能主動去研究的吧?

言歸正傳。Netty是實作NIO的框架,這表示它不只是提供NIO的API,而是把它包成一個比較完整的介面,把輸出/入過程中繁瑣的部份做掉,只開放需要開發人員實作的部份,以專注於應用的實作,大幅度減輕了開發所需的時間。

Netty的框架很先進。連Google的SPDY也很早就支援。因為在下也剛接觸的關係,實際的使用還不熟練,卻感覺得到這個框架的生命力,令人忍不住躍躍欲試。

不過Netty也發展了好多個年頭了。現在才接觸到,個人覺得有點跟不上時代...實在是實務上沒有用過。有時,沒有需求的話就很難接觸到。推薦我Netty的朋友說了,台灣似乎比較少用NIO,畢盡交易量少,感受不到NIO的優點,對岸用的倒是很多。就先接受這個理由吧。

2009年1月20日 星期二

Building socket connection within a timeout second

網路上已經有一些文章說明了作法,本文也只是一個整理而已。
在java 1.4之後,可以使用以下方式達成:
Socket tmpSocket = new Socket();
tmpSocket.bind(null);
tmpSocket.connect(new InetSocketAddress(ip, port), iniTimeout);
tmpSocket.setSoTimeout(workTimeout);

在1.3以前的作法大至上都是把Socket的連結做在Thread裡面,然後超過限定的時間就砍掉,詳細作法麻煩參考以下連結:
http://www.jguru.com/faq/view.jsp?EID=735679
https://lists.spline.inf.fu-berlin.de/lurker/message/20020611.154904.8f2a919c.nl.html

2008年6月12日 星期四

Securing Web Service with SSL (support jdk 1.3)

在上一篇的文章裡,小弟搞定了WebService基本的使用方式。
然而,為了所謂的"安全需求"(這很重要,只是他X的為什麼要用SSL),所以希望能用SSL技術來達成。

何謂SSL?
它就是指加密通道技術(這個譯名最近好像不用了?)。技術正如其名,就是利用憑證技術把傳輸的通道加密起來。如下:
======受加密保護======
某甲 <-----DATA的安全通道-----> 某乙
======受加密保護======
雖然稱它加密了通道,但事實上加密的還是被傳輸的資訊。這個技術已經愈來愈普及,所以技術上很成熟,能很容易的使用。一個網站如果使用了SSL,那麼你會看到它的連接方式成變成https://,而不是常見的http://了。
Java的SSL
當小弟使用java的URL類別去連接https,馬上就丟出了例外(exception)。上網查了一堆文章,全都在介紹JSSE。但是,JSSE只適用於以往的Java 1.1、1.2(可能還有1.3)版,之後的JSSE其實已經被整進Java裡面了,無須額外安裝或是下載jar檔。
更不需要設什麼安全提供,如:
System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol"); Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
一切的一切就只是讓你的jre信任SSL的憑證鍊即可。信任的方法很簡單,在你的jre\lib\security底下有一個cacerts檔。用keytool把SSL的憑證鍊中的每個憑證加進來,就算達到信任了!指令為:
keytool -import -keystore cacerts -file <憑證檔> -alias <給這個資訊任意名稱>
cacerts的預設密碼是changeit。
使用前,可以先copy一份cacerts作為備份。
Web Service混搭SSL
之後,再用Web Service直接去用URL類別連接https就不會有exception了!可喜可賀!(如右上圖)
共勉之
其他參見: