动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
电脑书籍下载:程序设计书籍 | 数据库教程书籍 | 平面与多媒体书籍 | 网络通讯书籍 | 系统管理书籍 | 网络安全书籍 | 认证考试书籍
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Java教程 ]的信息



本月文章推荐
.微软.Net VS Java两军对垒 Web服.
.Java 项目中应用Subversion配置与.
.Java后台服务程序设计.
.LineNumberReader提供更好的出错.
.Apache Tomcat v5.5.1.
.安全性和类载入程序体系结构.
.NetBeans 5 正式版发布.
.Java 2 Micro Edition简介(三).
.JDK1.1专题.
.深入讨论JSF中Tree2组件使用方法.
.weblogic常见问题提示.
.检测你数据库连接的物理状态.
.软件测试认识中的误区.
.界面代码重构有感.
.J2EE 1.5 提供的另一种形式的for.
.Type 属性.
.告诉你J2ME是什么.
.使用Java编写Palm OS程序的.
.jrc-src0.4.00源代码发布版(Jav.
.使用Spring来创建一个简单的工作.

Peer-to-Peer Sockets 工程入门

发表日期:2008-1-5 |



  Peer-to-Peer (P2P)Sockets工程在JXTA peer-to-peer虚拟网络重新实现了对应于标准TCP/IP网络中的Java标准的Socket,ServerSocket,和InetAddress等类。该工程同时还引入了一些注入Jetty web server,Apache XML-RPC客户端和服务器库,Apache JASPer jsp引擎之类的流行web package。使这些服务可以运行在Peer-to-Peer Sockets 的框架下。
  
  在这片文章结束的时候,你会理解对P2P Sockets packages的需求和以及开发它的动机,学会怎么配置P2P Socket 库使之在你的系统上能够运行,学会怎么样建立P2P的服务器和客户端Socket,怎么使用P2P的InetAddress 类,还包括框架下的安全问题以及它的局限性。
  
  动机
  
  P2P Socket工程的设计的使用对象是对以下几个领域有爱好的开发者:
  
  ●将Internet回归到end-to-end的原则当中
  
  ●一种绕过ICANN和Verisign的替代peer-to-peer域名系统,这个系统是完全分布式的,对更新拥有比标准DNS快的多的响应速度。
  
  ●一种任何人都可以建立活着使用网络服务的Internet,及时他们使用动态的IP地址或是没有IP地址,或是只有内网地址(NAT),或者是在ISP的防火墙之后。
  
  ●一个每一个Peer都能够自动的建立一个Web Server,提供XML-RPC服务,能够快速的将这种服务提供给其他的Peer。
  
  ●使为Peer-to-Peer网络添加Java Socket和ServerSocket 的应用更加轻易
  
  ●享受更酷的科技
  
  P2P Socket 工程在JXTA peer-to-peer网络上重新实现了标准java.net报当中的类。一些人可能要问“难道标准TCP/IP socket和ServerSocket不是已经是peer-to-peer的了吗?”标准的TCP/IP socket和server socket在理论上是peer-to-peer的,不过由于防火墙,NAT设备,以及DNS所存在的政治或是技术的问题,在实际上却没有做到这一点。首先,Internet上的许多peer使用的都是通过DHCP协议取得的动态IP,这些IP由通过NAT设备共享和过滤,还有一些IP地址由于防火墙的限制,很难被访问到。在这样的条件下建立server socket应用要么是不可能的,要么就需要在应用层进行精妙的控制来绕过这些限制。其次,TCP/IP Socket依靠于DNS系统来将用户友好的主机名转变为IP地址。DNS在理论上就是办分布式的,但是在治理层面上,DNS是在ICANN下集中式治理的,而ICANN是一个反应迟钝的,没有创新意识的组织。再次,标准的DNS对对那些过滤或是使用动态IP地址的edge-peer支持的并不好,更新需要花费很长的时间传播下去而且并不提供presence信息。对那些想要开发能够扩展DNS到新的领域(例如将即时消息的用户名和存在信息加入到DNS)的新应用的开发者来说,DNS系统的技术和政治因素阻碍了他们的工作。
  
  JXTA是一个用于在TCP/IP之上建立peer-to-peer覆盖网络的开源工程。在网络中的没一个peer都会被分配到一个和IP地址类似的号码,即时他们没有固定的IP地址或是出在防火墙之后。在JXTA 网络上的super-peer通讯运行应用层的路由协议来储存例如假如到达其他的peer,如何加入peer group,其他peer提供了怎么样的内容之类的信息。JXTA应用层在Peer之间提供了中继的代理服务,是出在防火墙或是NAT后的Peer可以正常的通信。Peer可以自己组织成为Peer Group,这样可以将所有的查询请求限定在natural security container当中。任何peer都可以分布式的建立并发布一个peer group,其他的Peer通过使用其他的super-peer可以搜索并发现这些peer group。Peer之间的通信通过pipe的方式来进行,这和Unix系统当中的Pipe非常的类似。Pipe是对两个peer之间通讯方式的一种抽象,它帮助peer互相通讯,即使他们处在不同的网络区域当中。
  
  JXTA是一种非常强大的框架。但是,它并不是一种轻易学习的框架,将现有的软件移植到JXTA下也不是一件轻易的事情。P2P Sockets成功地将JXTA隐藏起来,使之看起来就像是传统的TCP/IP网络。假如peer想要成为服务器,他只需要简单的使用包含他们想使用的domain name和端口的P2P Server Socket就可以了。P2P的客户端可以通过host名和特定的端口号来建立Socket连接访问那些服务。Host可以被解析为域名,例如www.nike.laborpolicy,或是IP地址,例如44.22.33.22。在这些场景之后,host实际被解析为JXTA原语,而不是被解析为DNS或是TCP/IP。举例来说:域名www.nike.laborpolicy实际上是JXTA peer group 的广告消息中的一个NAME字段。P2P Sockets和Server socket 与正常的TCP/IP Socket和ServerSocket的使用方法完全相同。我们为希望了解内幕和那些已经懂得JXTA的用户提供了一张表(http://www.onjava.com/onjava/2003/12/03/examples/table.Html),在这张表中可以查询到传统TCP/IP概念上的域名,IP地址等概念和JXTA中对等概念的对应关系。
  
  使用这种方式的好处是多方面的。首先,程序员可以将他们在标准TCP/IP Socket和Server Socket的知识应用到JXTA peer-to-peer网络当中而不需要专门学习JXTA。其次,所有的P2P Socket 的代码都是标准java.net中类的子类,例如java.net.Socket,所以现存的网络应用可以很轻易的移植到peer-to-peer网络当中。 P2P Socket工程已经将很多现存的软件移植到了peer-to-peer网络当中,其中包括web服务器(Jetty),它可以接收请求,被在peer-to-peer 网络上提供内容服务;一个servlet和JSP引擎(Jetty 和 Jsper),它可以使现存的servlet和JSP直接在P2P网络中应用;一个XML-RPC客户端和服务器(Apache XML-RPC),它可以访问和对外提供P2P XML-RPC 端点;一个HTTP/1.1客户端(Apache Commons HTTP-Client),它可以访问P2P的web 服务器;一个网关(Smart Cache),它可以是现有浏览器访问P2P的P2P web 站点;和WikiWiki(JSPWiki),它能够在你的主机上建立Wiki站点,使其他的Peer可以通过P2P网络访问,并编辑。所有的这些软件在移植之后都能够正常的使用并且和以前看起来完全一样。P2P Socket的抽象非常的成功,移植这些软件所花费的时间仅仅是30分钟到几个小时不等。P2P Socket工程是完全开源的,大部分都采用BSD-type证书,由于是使用Java编写的,所以也具有跨平台的特性。
  
  由于P2P Socket是建立在JXTA之上的,所以它可以很轻易的处理一些传统的ServerSocket和Socket所不能处理的情况。第一,在P2P Socket上建立的ServerSocket,具有fail-over(不知道怎么翻译,应该是可靠性之类的意思)和易扩展的特性。假如不同的Peer可以启动ServerSocket使用同一个域名和端口,例如www.nike.laborpolicy 端口号:80。当一个客户端打开P2P socket连接到www.nike.laborpolicy 端口号:80时,它会随机的连接到一个提供一个使用这个域名和端口的主机上。所有的这些服务器Peer可能提供同样的Web页面,这就是可以将用户的请求分布到不同的服务器之上同时也就使得某一个服务器的崩溃更轻易被恢复。这一点和DNS round-robin非常的相似,在DNS round-robin当中一个域名可以被解析为多个IP地址用来进行负载均衡。第二,由于P2P Socket并不使用DNS系统,主机名可以任意指定。用户可以建立他自己的个性结尾,例如www.boobah.cat 或是www.cynthia.goddess,或是应用确定的名字,例如一个即使消息系统使用Brad GNUberg或是Fidget666当作域名。第三,一个指定域名的服务端口可以分布在全世界很多的Peer当中。举例来说,假设你有一个虚拟主机名www.nike.laborpolicy,一个Peer可以在80端口提供web页面,另一个Peer可以使用2000端口提供即时消息,最后一个Peer可以在3000端口为其他Peer提供即时的RSS更新。现在一个域名可以由很多分布不同的Peer协同在一起提供服务。
  
  需求与配置
  
  要开发和使用P2P Socket你必须下载和安装一下的这些软件。
  
  ●JDK 1.4+
  
  P2P Socket只能工作在JDK 1.4或是更新版本的Java虚拟机之上,由于P2P Socket是Java.net.InetAddress的子类,在1.4之前,这个类是final类型的。
  
  ●Ant 1.5.3+
  
  用来构建和运行P2P Socket以及类似于Jetty 和 Jasper之类的扩展
  
  ●P2PSockets-1.0-beta1.zip
  
  P2P Socket 的最新发布包
  
  安装和配置好JDK和Ant,并保证它们都可以在命令行下正确运行。将P2PSockets-1.0-beta1.zip解开到硬盘上。在目录名当中不能出现空格,否则P2P Sockets的构建文件不能正常工作。
  
  必须将JAR文件p2psockets/lib/ant-contrib-0.5.jar加入到你的CLASSPATH当中去。在Windows当中可以使用下面这个命令:
  
  set CLASSPATH=%CLASSPATH%;c:\p2psockets\lib\ant-contrib-0.5.jar
  
  P2P Sockets的目录包含两个不同的子目录,test/clientpeer和test/serverpeer,它们中有已经设置好的JXTA配置信息(分别在test/clientpeer/.JXTA和test/serverpeer/.JXTA当中)。假如你想要了解更多的关于JXTA的配置问题,你可以阅读JXTA配置指南。两个测试peer已经被配置为最差的情况下工作模式,也就是peer处在防火墙或是NAT设备之后,也就是说用户必须使用其他的中间Peer来中继它们的请求。假如用户不处在这种环境下,这种配置方式也是可以工作的。使用JXTA的一个好处就是,当你在使用这个系统的时候,它对你的程序几乎是透明的。
  
  当你在测试本文中的代码的时候,你必须连接到Internet。这样做基于一下的两个原因:首先,例子程序使用Sun提供的公共JXTA服务器来将启动peer引入JXTA网络当中;其次,在一些操作系统上(例如Windows XP, 缺省),网络系统在你没有连接到网络上时会自动关闭,这样就会阻碍运行在同一个主机上的客户端peer和服务器peer互相通讯。
  
  建立一个P2P Server Socket
  
  建立一个P2P server Socket的方法和建立一个标准的java.net.Server

上一篇:把P2P进行到底:讲述Jxta的故事(2) 人气:281
下一篇:高手编程之——JTextArea操作 人气:450
浏览全部Java的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-7-5 360安全卫士 V4.2.0.1004
2008-7-5 PHPDug v2.0 多国语言版
2008-7-5 乘风电影程序 v3.69 (SQL)
2008-7-5 乘风电影程序 v3.69
2008-7-5 wfTextImage文字图像组件 v1.5
2008-7-5 ZY music! v1.1.0705
2008-7-5 FavShop网店系统 v1.0
2008-7-4 天空网络电影系统SKYUC v2.5.1 B
2008-7-4 Drupal v7.x-dev Build 080704
2008-7-5 AgileMessenger即时通讯工具 v1.
2008-7-5 GoodCalculator2.0版固件计算器
2008-7-5 RepoName源地址搜索工具 v1.21b
2008-7-5 AgileMessenger即时通讯工具 v1.
2008-7-5 TouchCopy多媒体管理软件 v3.13完
2008-7-5 VideosTone视频铃声 v1.1汉化破解
2008-7-5 TouchPad触摸板 v4.44破解版
2008-7-5 VideosTone破解补丁 v1.0
2008-7-5 Feeds GoogleReader客户端 v0.4.3


  发表评论
姓 名: 验证码:
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報