码迷,mamicode.com
首页 > 编程语言 > 详细

用JAVA实现P2P网络通信

时间:2014-09-30 12:03:49      阅读:417      评论:0      收藏:0      [点我收藏+]

标签:java、p2p

一、 前言 
    P2P(Peer-to-Peer 端到端)模型是与C/S(客户/服务器)模型相对应。基于C/S的用户间通信需要由服务器中转,在C/S中的服务器故障将导致整个网络通信的瘫痪。。而基于P2P的用户间通信则是直接通信,去掉了服务器这一层,带来的显著优点是通信时没有单一的失败点,一个用户的故障不会影响整个P2P网络。本文提供了一种用JAVA实现P2P网络通信的方法。

 

 二、P2P通信的关键技术分析

1.P2P通信模型

   在P2P网络中,任意两个端点之间可实现直接通信。在基于C/S的网络中,客户端可以通过向服务器注册来实现彼此之间的定位(获得IP和端口)。对于P2P网络中,是如何实现彼此之间的定位和通信,下面做一阐述。
2.获得网络中可以通信端点的IP和端口
   假设有一个端点A,欲和P2P网络中其他端点通信,在通信之前,端点A必须首先把自己的IP和端口通知P2P网络中的其他每一个端点。其他每个端点收到这个信息后,就获得了端点A的IP和端口,随后向端点A反馈自己的IP和端口信息,使端点A也获得P2P网络中每个端点的IP和端口。
   这里有两个技术可以完成端点A向其他端点通知其IP和端口的工作,一是广播技术,二是多播技术。
   广播技术主要在局域网中使用,在局域网中的每一个端点(主机)都不得不接受并处理一个广播数据包。因此为了避免网络阻塞,路由器均限制广播数据包的通过。所以设计基于互联网的P2P程序不适合采用广播技术。
   多播技术是一种允许一个或多个发送者(多播源)发送单一的数据包到多个接收者(一次的,同时的)的网络技术。 多播源把数据包发送到特定多播组,而只有属于该多播组的地址才能接收到数据包。多播可以大大的节省网络带宽,提高了数据传送效率。减少了主干网出现拥塞的可能性。多播组中的端点(主机)可以是在同一个物理网络, 也可以来自不同的物理网络(如果有多播路由器的支持)。因此,多播技术是我们的选择。

注:广播同一客户端只能运行一个(端口占用),多播不会;

 

关于广播、多播 请见:http://oma1989.iteye.com/blog/1967744


本文出自 “OMA” 博客,请务必保留此出处http://oma1989.blog.51cto.com/1931488/1559623

用JAVA实现P2P网络通信

标签:java、p2p

原文地址:http://oma1989.blog.51cto.com/1931488/1559623

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!