|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
C#是盗用了Java的源代码,仿照开发的,原因是Java是开源的啊,盗了也白盗,还有一点,开发C#语言的团队是就是开发Java语言的团队,是微软重金挖过去的啊防火墙|服务器我到sun站点上,发明他们的javaApplet谈天室可以冲破proxy,
我在公司的局域网可使用的,而一样平常的java程序是不克不及够的。
人人能够往剖析一下他们的程序
本技能将向您报告怎样编写可经由过程代办署理会见因特网上的Web服务器的Java使用程序。在Java使用程序中到场代办署理撑持只需分外编写几行代码,且不依附任何平安性“毛病”。
几近一切的公司都非常存眷回护本人的外部收集,以防黑客及进窃者。一种罕见的平安措施是完整断开与因特网的毗连。假如黑客们不克不及毗连到您的任何一台呆板,他们就不克不及不法进进您的体系。这类战略发生的倒霉反作用是,外部用户没法会见内部的因特网服务器,如Yahoo或JavaWorld。为懂得决这一成绩,收集办理员一般安装“代办署理服务器”。实践上,代办署理是安装于因特网和外部网之间的一种服务,用来办理这两个范畴之间的毗连。代办署理有助于削减平安性的内部威逼,同时还同意外部用户会见因特网服务。只管Java使得编写因特网客户机不再坚苦,可是假如客户机不克不及经由过程代办署理,则它们毫无用途。侥幸的是,Java使得利用代办署理撑持不再坚苦--假如您晓得密诀,这就是现实。
将Java和代办署理分离起来的法门即在Java运转时激活特定的体系属性。这些属性未被写进正式文件,只是作为Java传说的一部分在Java编程职员中秘传。为了撑持代办署理,Java使用程序不但必要指定代办署理自己的信息,并且必要指定用于认证的用户信息。在入手下手利用网际协定之前,您必要在程序中增加以下几行代码:
System.getProperties().put("proxySet","true");
System.getProperties().put("proxyHost","myProxyMachineName");
System.getProperties().put("proxyPort","85");
下面的第一行关照Java您要经由过程代办署理举行毗连,第二行指定代办署理地点的呆板,第三行指定代办署理监听的端口。有些代办署理在受权用户会见因特网之前,请求用户输出用户名和口令。假如您利用位于防火墙以内的Web扫瞄器,您便可能碰着过这类情形。以下是实行认证的办法:
URLConnectionconnection=url.openConnection();
Stringpassword="username:password";
StringencodedPassword=base64Encode(password);
connection.setRequestProperty("Proxy-Authorization",encodedPassword);
这段代码的头脑是,您必需调剂HTTP标头以收回用户信息。这是经由过程挪用setRequestProperty()来完成的。这类办法同意您在收回哀求之前处置HTTP标头。HTTP请求用base64对用户名和口令举行编码。侥幸的是,有一组公用域API,它们将代您实行编码(请参阅参考资本部分)。
如您所见,在Java使用程序中到场代办署理撑持其实不必要做几事情。有了如今的常识,再做一点研讨(您必需查明您的代办署理是怎样处置您感乐趣的协定和怎样举行用户认证的),您就可以用其他协定完成代办署理。
FTP代办署理
ScottD.Taylor提出这个法门来处置FTP协定代办署理:
defaultProperties.put("ftpProxySet","true");
defaultProperties.put("ftpProxyHost","proxy-host-name");
defaultProperties.put("ftpProxyPort","85");
接上去您即可以经由过程以下代码利用"ftp"协定会见文件URL:
URLurl=newURL("ftp://ftp.netscape.com/pub/navigator/3.04/windows/readme.txt");
假如有人有利用其他网际协定代办署理的例子,我很想看看。
注重:代码示例(Example.java)仅在JDK1.1.4下测试过。
后续技能!
来自MarlaBonar:
关于仍在利用JDK1.1.7(共同WebSphere3.0)的开辟职员而言,将proxyHost和proxyPort设为体系属性不起感化;conn.getInputStream()大概前往毗连超时,大概是找不到主机路径。可是,我利用承受Host和Port为参数的URL机关函数办理了这一成绩(利用我的代办署理主机和端口):
publicURL(Stringprotocol,Stringhost,intport,Stringfile).
来自DylanWalsh:
借助用户名和口令举行认证的办法不起感化。应将"Basic"置于认证字符串的开首;比方:
StringencodedPassword=base64Encode(password);
应当是:
StringencodedPassword="Basic"+base64Encode(password);
您也不用用一个独自的程序来举行64位编码。您可使用sun.misc.BASE64Encoder()类。上面是完成这两处修改以后的代码:
System.getProperties().put("proxySet","true");
System.getProperties().put("proxyHost",proxyHost);
System.getProperties().put("proxyPort",proxyPort);
StringauthString="userid:password";
Stringauth="Basic"+newsun.misc.BASE64Encoder
().encode(authString.getBytes());
URLurl=newURL("http://java.sun.com/");
URLConnectionconn=url.openConnection();
conn.setRequestProperty("Proxy-Authorization",auth);
来自MarcelOerlemans:
上面是利用socks4代办署理服务器的办法:
System.getProperty("socksProxySet",true);
System.getProperty("socksProxyHost",proxyHostName);
System.getProperty("socksProxyPort",proxyPort);
UsuallytheproxyPortforSocks4isport1080
接上去您就能够用Socks4举行毗连了。
其实你不用Struts,spring这些工具,直接用jsp,servlet能够很方便地写出来,而且,可以根据个人的水平、爱好,有很多方案。而struts,spring这些工具的出来。 |
|