从下面隧道客户端程序TunnelClient的代码中我们可以看到,其工作原理与Java隧道服务端的完全相同。客户端的java.io.ObjectInputStream,,java.io.ObjectOutStream分别对应服务端的java.io.ObjectOutStream ,java.io.ObjectInputStream。客户端与服务端形成了一个对象传输的管道。
在Java隧道中我们可以增加加密技术来保证传递信息在Inte.net上的安全传递。在对象进入通道之前,可以用加密密钥对对象流先加密(我们假设用非对称加密算法,当然可以根据加密强度的要求用不同的加密算法和密钥长度),再送入通道中;在接收到加密对象流之后,先用解密密钥对对象流解密,再还原为对象实例。
这里要注意,无论是在服务端还是在客户端,都必须包含Msg类的Class文件,而且Msg在两端必须要一致。因为隧道的一端要实例化Msg对象,另一端要从IO中获得对象流,再用Msg类来造型(Cast)。
4.结束语
Java隧道技术如此简单,无论是代码的编写,还是运行环境的组建,都非常容易。正是因为Java隧道技术的简单性,才使我们可以方便的把这个技术集成到应用系统中。然而,简洁不代表功能的简单,基于这个技术,可以实现基于Http的对象消息传递和远程方法调用,并且穿越防火墙。Java隧道技术为Java平台的应用在因特网上的部署提供了一个简单,高效的方案。