什么是p2p技术下载_什么叫p2p

什么是p2p技术下载_什么叫p2p,第1张

在JAVA中,发送和接收多播信息的方法:

发送多播信息需经历步骤

确定发送的具体信息内容

Stringmsg="Hello";

选用专门为多播指定的D类IP地址(224001到239255255255),创建一个多播组

InetAddressgroup=InetAddressgetByName("228567");

使用指定的端口(一般选1024以上的端口号)建立多播套接

s=new(6789);

加入多播组

sjoinGroup(group);

创建一个数据报封装多播信息

hi=new(msggetBytes(),msglength(),

group,6789);

发送

ssend(hi);

接收多播信息的步骤

开辟接收缓冲区

byte[]buf=newbyte[1000];

创建接收数据报

recv=new(buf,buflength);

接收

sreceive(recv);

注意:以上发送和接收程序在同一个文件中实现,若在不同文件中实现则应分别定义多播套接字并加入多播组。

3.与已知IP和端口的端点通信

在互联网上主要采用TCP和UDP来实现两点之间的通信。采用TCP可可靠传送信息,但花费时间较多;采用UDP可快速传递信息,但不能保证可靠传递。

JAVA实现TCP通信的方法:

利用Socket(InetAddressaddr,intport)和Socket(Stringhost,intport),创建客户端套接字,利用(intport)创建服务器端套接字,port端口就是服务器监听连接请求的端口,通过调用aept()返回一个最近创建的Socket对象,该Socket对象绑定了客户程序的IP地址或端口号。通过调用Socket的()方法获得输入流读传送来的信息,也可能通过调用Socket的()方法获得输出流来发送消息。

JAVA实现UDP通信的方法:

使用(byte[]buffer,intlength,InetAddressaddr,intport)确定数据包数组、数组的长度、数据包的地址和端口信息。使用()创建客户端套接字,而服务器端则采用(intport),调用send(dgp)和receive(dgp)来发送和接收数据包。本文设计的程序采用UDP。

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

1、 Socket(套接字)概念

网络上两个程序通过一个双向的通信连接实现数据的交换,这个连接的一段称为一个 socket ,socket是通信的基石,是支持TCP/IP协议的网络通信的基本 *** 作单元。它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。

Socket是对TCP/IP协议的封装,它把复杂的TCP/IP协议族隐藏在Socket接口后面,提供一个易用的接口,所以Socket本身并不是协议,而是一个调用接口(API)。

在一定程度可以认为Socket位于应用层和传输层之间。创建Socket连接时,可以指定使用的传输层协议,Socket可以支持不同的传输层协议(TCP或UDP),当使用TCP协议进行连接时,该Socket连接就是一个TCP连接。

2、 建立Socket连接

建立Socket连接至少需要一对套接字,其中一个运行于客户端,称为ClientSocket,另一个运行于服务器端,称为ServerSocket。

套接字之间的连接过程分为 三个步骤 :

(1)服务器监听:服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态,等待客户端的连接请求。

(2)客户端请求:指客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。

(3)连接确认:当服务器端套接字监听到或者说接收到客户端套接字的连接请求时,就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户 端,一旦客户端确认了此描述,双方就正式建立连接。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。

3、 Socket连接与>大概说说吧,细节跟代码真不是三两行的事就不多提:
方案一:
TcpClient与Tcplistenler来完成服务器与客户端之间的交互,后面的事情交给UDP,采用最原始最古老、最麻烦的技术、UDP穿透NAT使客户端与客户端建议连接机制完成后续的消息传递。
其中还有点相对“打洞”简单但是又比较麻烦的是TCP的粘包处理。
方案二:
简单好处理,缺点是对服务器的要求更高。
客户端彼此之间不产生交互,通过webclient、web>客户端之间的通讯有两个办法。
1
服务器中转
2
服务器上注册后,客户端之间直接通信。
对于第一种方法,大多比较简单。查一下socket的文章,还有大把现成的代码给你看。
第二个方法就稍微复杂一些。
但原理都一样。客户端A,链接服务器后,地址信息就保存到了服务器上。除了保持与服务器的通信外。另外开启一个
Socket,绑定到另一个端口,并且一直监听此端口。
客户端B连接服务器,从服务器上获取客户端A的地址信息。把客户端A当成服务器,连接A。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/12593552.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-08-26
下一篇2025-08-26

发表评论

登录后才能评论

评论列表(0条)

    保存