知识大全 编写支持基于代理的防火墙的Java应用程序

Posted 因特网

篇首语:大鹏一日同风起,扶摇直上九万里。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 编写支持基于代理的防火墙的Java应用程序相关的知识,希望对你有一定的参考价值。

编写支持基于代理的防火墙的Java应用程序  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  几乎所有的公司都十分关注保护自己的内部网络 以防黑客及入窃者 一种常见的安全措施是完全断开与因特网的连接 如果黑客们不能连接到您的任何一台机器 他们就不能非法进入您的系统 这种策略产生的不利副作用是 内部用户无法访问外部的因特网服务器 如 Yahoo 或 JavaWorld 为了解决这一问题 网络管理员通常安装 代理服务器 实际上 代理是安装于因特网和内部网之间的一种服务 用来管理这两个领域之间的连接 代理有助于减少安全性的外部威胁 同时还允许内部用户访问因特网服务 尽管 Java 使得编写因特网客户机不再困难 但是如果客户机不能通过代理 则它们毫无用处 幸运的是 Java 使得使用代理支持不再困难 如果您知道密诀 这就是事实     将 Java 和代理结合起来的秘诀即在 Java 运行时激活特定的系统属性 这些属性未被写入正式文件 只是作为 Java 传说的一部分在 Java 编程人员中秘传 为了支持代理 Java 应用程序不仅需要指定代理本身的信息 而且需要指定用于认证的用户信息 在开始使用网际协议之前 您需要在程序中添加以下几行代码     System getProperties() put( proxySet true );  System getProperties() put( proxyHost myProxyMachineName );  System getProperties() put( proxyPort );    上面的第一行通知 Java 您要通过代理进行连接 第二行指定代理所在的机器 第三行指定代理监听的端口 有些代理在授权用户访问因特网之前 要求用户输入用户名和口令 如果您使用位于防火墙之内的 Web 浏览器 您就可能碰到过这种情况 以下是执行认证的方法     URLConnection connection = url openConnection();  String password = username:password ;  String encodedPassword = base Encode( password );  connection setRequestProperty( Proxy Authorization encodedPassword );    这段代码的思想是 您必须调整 HTTP 标头以发出用户信息 这是通过调用 setRequestProperty() 来实现的 这种方法允许您在发出请求之前处理 HTTP 标头 HTTP 要求用 base 对用户名和口令进行编码 幸运的是 有一组公用域 API 它们将代您执行编码(请参阅参考资源部分)     如您所见 在 Java 应用程序中加入代理支持并不需要做多少工作 有了现在的知识 再做一点研究(您必须查明您的代理是如何处理您感兴趣的协议以及如何进行用户认证的) 您就能用其他协议实现代理      FTP 代理  Scott D Taylor 提出这个秘诀来处理 FTP 协议代理     defaultProperties put( ftpProxySet true );  defaultProperties put( ftpProxyHost proxy host name );  defaultProperties put( ftpProxyPort );    接下来您便可以通过以下代码使用 ftp 协议访问文件 URL     URL url = new URL( ftp:///pub/navigator/ /windows/readme txt );    如果有人有使用其他网际协议代理的例子 我很想看看     注意 代码示例 (Example java) 仅在 JDK 下测试过      后续技巧!   对于仍在使用 JDK (配合 WebSphere )的开发人员而言 将 proxyHost 和 proxyPort 设为系统属性不起作用 conn getInputStream() 或者返回连接超时 或者是找不到主机路径 但是 我使用接受 Host 和 Port 为参数的 URL 构造函数解决了这一问题(使用我的代理主机和端口)     public URL(String protocol String host int port String file)     借助用户名和口令进行认证的方法不起作用 应将 Basic 置于认证字符串的开头 例如     String encodedPassword = base Encode( password );    应该是     String encodedPassword = Basic + base Encode( password );    您也不必用一个单独的程序来进行 位编码 您可以使用 sun misc BASE Encoder() 类 下面是完成这两处改动之后的代码     System getProperties() put( proxySet true );  System getProperties() put( proxyHost proxyHost);  System getProperties() put( proxyPort proxyPort);  String authString = userid:password ;  String auth = Basic + new sun misc BASE Encoder  () encode(authString getBytes());  URL url = new URL( );  URLConnection conn = url openConnection();  conn setRequestProperty( Proxy Authorization auth);    下面是使用 socks 代理服务器的方法     System getProperty( socksProxySet true);  System getProperty( socksProxyHost proxyHostName);  System getProperty( socksProxyPort proxyPort);  Usually the proxyPort for Socks is port     接下来您就可以用 Socks 进行连接了 cha138/Article/program/Java/JSP/201311/19767

相关参考

知识大全 编写高效的线程安全类

 在语言级支持锁定对象和线程间发信使编写线程安全类变得简单本文使用简单的编程示例来说明开发高效的线程安全类是多么有效而直观  Java编程语言为编写多线程应用程序提供强大的语言支持但是编写有用的没有错

知识大全 用Java 编写手机应用程序

时尚:用Java编写手机应用程序  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  不知从什么时候开

知识大全 使用UML编写Java应用程序 (2)实现

使用UML编写Java应用程序(2)实现  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  程序设计

知识大全 编写多线程Java应用程序常见问题

编写多线程Java应用程序常见问题  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!几乎所有使用AWT

知识大全 跨平台编写Java程序注意事项

Java进阶:跨平台编写Java程序注意事项  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  使用

知识大全 用Java编写简单的UDP网络通信程序

用Java编写简单的UDP网络通信程序  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Java中

知识大全 Java中利用JMF编写摄像头拍照程序

Java中利用JMF编写摄像头拍照程序  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  我把程序分

知识大全 使用 Java 编写 B/S 网络通信程序

使用Java编写B/S网络通信程序  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!    网络上的系

知识大全 使用Java编写B/S网络通信程序

使用Java编写B/S网络通信程序  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!网络上的系统结构多

知识大全 如何用 java 编写一个扫描仪程序

  javaainmaybeapowerfulsolutionyoucangotognomesktodownloadthenewestpackage   JavaTwainversionisapart