本文目录一览:
- 基于java的p2p实现文件共享和传输
- 如何使用java实现tcp的p2p的打洞技术
- 我想问下现在是不是都用的是JAVA语言来做P2P贷款平台开发啊?有什么好处?
- p2p网贷平台系统都是用什么语言开发的?熟知的语言有C++,java.
- p2p 用JAVA写好,还是用VC++好?
基于java的p2p实现文件共享和传输
在JAVA中,发送和接收多播信息的方法: 发送多播信息需经历步骤
- 确定发送的具体信息内容
String msg = "Hello";
- 选用专门为多播指定的D类IP地址(224.0.0.1到239.255.255.255),创建一个多播组
InetAddress group = InetAddress.getByName("228.5.6.7");
- 使用指定的端口(一般选1024以上的端口号)建立多播套接字
MulticastSocket s = new MulticastSocket(6789);
- 加入多播组
s.joinGroup(group);
- 创建一个数据报封装多播信息
DatagramPacket hi = new DatagramPacket(msg.getBytes(), msg.length(), group, 6789);
- 发送
s.send(hi);
接收多播信息的步骤
- 开辟接收缓冲区
byte[] buf = new byte[1000];
- 创建接收数据报
DatagramPacket recv = new DatagramPacket(buf, buf.length);
- 接收
s.receive(recv);
注意:以上发送和接收程序在同一个文件中实现,若在不同文件中实现则应分别定义多播套接字并加入多播组。
与已知IP和端口的端点通信
在互联网上主要采用TCP和UDP来实现两点之间的通信。采用TCP可可靠传送信息,但花费时间较多;采用UDP可快速传递信息,但不能保证可靠传递。
JAVA实现TCP通信的方法:
- 利用
Socket(InetAddress addr, int port)
和Socket(String host, int port)
创建客户端套接字 - 利用
ServerSocket(int port)
创建服务器端套接字 port
端口就是服务器监听连接请求的端口- 通过调用
accept()
返回一个最近创建的Socket
对象,该Socket
对象绑定了客户程序的IP地址或端口号 - 通过调用
Socket
的getInputStream()
方法获得输入流读传送来的信息 - 也可能通过调用
Socket
的getOutputStream()
方法获得输出流来发送消息
JAVA实现UDP通信的方法:
- 使用
DatagramPacket(byte [] buffer, int length, InetAddress addr, int port)
确定数据包数组、数组的长度、数据包的地址和端口信息 - 使用
DatagramSocket()
创建客户端套接字 - 服务器端则采用
DatagramSocket(int port)
- 调用
send(DatagramPacket dgp)
和receive(DatagramPacket dgp)
来发送和接收数据包 P2P(Peer-to-Peer 端到端)模型是与C/S(客户/服务器)模型相对应。基于C/S的用户间通信需要由服务器中转,在C/S中的服务器故障将导致整个网络通信的瘫痪。而基于P2P的用户间通信则是直接通信,去掉了服务器这一层,带来的显著优点是通信时没有单一的失败点,一个用户的故障不会影响整个P2P网络。本文提供了一种用JAVA实现P2P网络通信的方法。
如何使用java实现tcp的p2p的打洞技术
建立穿越NAT设备的p2p的TCP连接只比UDP复杂一点点,TCP协议的"打洞"从协议层来看是与UDP的"打洞"过程非常相似的。尽管如此,基于TCP协议的"打洞"至今为止还没有被很好的理解,这也造成了对其提供支持的NAT设备不是很多。在NAT设备支持的前提下,基于TCP的"打洞"技术实际上与基于UDP的"打洞"技术一样快捷、可靠。实际上,只要NAT设备支持的话,基于TCP的p2p技术的健壮性将比基于UDP的技术的更强一些,因为TCP协议的状态机给出了一种标准的方法来精确的获取某个TCP session的生命期,而UDP协议则无法做到这一点。
一. 套接字和TCP端口的重用
实现基于TCP协议的p2p"打洞"过程中,最主要的问题不是来自于TCP协议,而是来自于来自于应用程序的API接口。这是由于标准的伯克利(Berkeley)套接字的API是围绕着构建客户端/服务器程序而设计的,API允许TCP流套接字通过调用 connect()
函数来建立向外的连接,或者通过 listen()
和 accept
函数接受来自外部的连接,但是,API不提供类似UDP那样的,同一个端口既可以向外连接,又能够接受来自外部的连接。而且更糟的是,TCP的套接字通常仅允许建立1对1的响应,即应用程序在将一个套接字绑定到本地的一个端口以后,任何试图将第二个套接字绑定到该端口的操作都会失败。
为了让TCP"打洞"能够顺利工作,我们需要使用一个本地的TCP端口来监听来自外部的TCP连接,同时建立多个向外的TCP连接。幸运的是,所有的主流操作系统都能够支持特殊的TCP套接字参数,通常叫做 SO_REUSEADDR
,该参数允许应用程序将多个套接字绑定到本地的一个endpoint(只要所有要绑定的套接字都设置了 SO_REUSEADDR
参数即可)。BSD系统引入了 SO_REUSEPORT
参数,该参数用于区分端口重用还是地址重用,在这样的系统里面,上述所有的参数必须都设置才行。
我想问下现在是不是都用的是JAVA语言来做P2P贷款平台开发啊?有什么好处?
当然也有其它语言,只是用java的比较多,比如迪蒙网贷系统,大部分用的是java语言开发的系统,安全无漏洞;Java主要用于网络应用程序开发(网站建设等),因此对安全性有较高的要求,Java通过自己的安全机制防止了病毒程序的产生和下载程序对本地系统的威胁破坏。做P2P对安全性要求高,所以大部分用的是java语言。
p2p网贷平台系统都是用什么语言开发的?熟知的语言有C++,java.
网贷系统一般有java版、PHP版、第三方资金托管版、定制版,后两种其实都是用java和PHP语言做的,不过是根据客户需要增加了功能。一般的话用的比较多的还是java版,但是PHP版开发速度会更快一些。雄猫软件做的P2P网贷系统就有java3.0版、PHP3.0版、第三方资金托管版、定制版,案例近百家,业内口碑很好。 再看看别人怎么说的。
p2p 用JAVA写好,还是用VC++好?
建议C++。因为跨平台的关系,java无法去过细的去实现底层的细节。而Java虚拟机也未能覆盖那么多范围——虽然这种情况可能会最终有所改观,但总体当前实现有可能性不大。 C++是实现这类程序的再方便不过的工具。相关的API都是用C写的,使用起来很方便。 如果一定要用Java,可以参看SUN公司在2000年就推出了JXTA,该技术的目的是为P2P的网络应用开发提供一个统一的平台,而且为了鼓励和支持该技术的发展,JXTA项目采用了开放源码的方式,因此吸引了大量业界人士参与到JXTA技术的研究与应用当中,你可以从这方面入手来查找资料。