從下面隧道客戶端程序TunnelClient的代碼中我們可以看到,其工作原理與Java隧道服務端的完全相同??蛻舳说?STRONG>java.io.ObjectInputStream,,java.io.ObjectOutStream分別對應服務端的java.io.ObjectOutStream ,java.io.ObjectInputStream??蛻舳伺c服務端形成了一個對象傳輸的管道。
在Java隧道中我們可以增加加密技術來保證傳遞信息在Inte.net上的安全傳遞。在對象進入通道之前,可以用加密密鑰對對象流先加密(我們假設用非對稱加密算法,當然可以根據加密強度的要求用不同的加密算法和密鑰長度),再送入通道中;在接收到加密對象流之后,先用解密密鑰對對象流解密,再還原為對象實例。
這里要注意,無論是在服務端還是在客戶端,都必須包含Msg類的Class文件,而且Msg在兩端必須要一致。因為隧道的一端要實例化Msg對象,另一端要從IO中獲得對象流,再用Msg類來造型(Cast)。
4.結束語
Java隧道技術如此簡單,無論是代碼的編寫,還是運行環境的組建,都非常容易。正是因為Java隧道技術的簡單性,才使我們可以方便的把這個技術集成到應用系統中。然而,簡潔不代表功能的簡單,基于這個技術,可以實現基于Http的對象消息傳遞和遠程方法調用,并且穿越防火墻。Java隧道技術為Java平臺的應用在因特網上的部署提供了一個簡單,高效的方案。
原文轉自:http://www.anti-gravitydesign.com