‘壹’ 谁知道p2p信贷系统源码有哪几种语言呢能详细介绍下吗
介绍下目前几款主流的网贷系统源码开发语言:
1. java语言。java技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网等,优势非常明显。也是目前网贷系统制作最佳开发语言。
2. .NET语言。.NET可生成伸缩性和稳定性更好的应用程序,并提供更好的安全保护。鉴于安全性也是网贷源码开发中会考虑使用的一种语言。
3. PHP语言。PHP语言也是目前用的非常多的一款开发语言,语法吸收了C语言、Java和Perl的特点,易于学习,使用广泛,主要适用于Web开发领域。优势非常明显,支持几乎所有流行的数据库以及操作系统;最重要的是PHP可以用C、C++进行程序的扩展等等。如果考虑程序移植的话就比较麻烦了。以上内容摘自迪蒙网贷系统网络,希望对你有帮助。
‘贰’ p2p网贷系统源代码开发
网贷系统,主要看轮侍重的是其系统的安全性,功能性,增值服务性,扩展性,稳定性等方腊绝吵面。上海巨应网宏判络的网贷系统,具有上面的特性之外,更有独特的创新,金融大格局的软体创新,及资金对接民生银行体系托管系统,符合政策需要。有需要你可以去了解下。
‘叁’ p2p下载器源码
p2p借贷平台出现后,有效满足了大量民间融资担保借贷企业的需求。同时,随着p2p借贷程序开发技术的发展,获取一套安全可靠的p2p借贷程序源代码将不再困难。尤其是当前系统开发者的开发服务和技术不断细化和完善,能够为客户提供更加便捷、灵活、成熟、更加符合客户需求的产品。同时,随着p2p借贷程序源代码的泄露,p2p借贷程序源代码可以通过网络下载。但是这种情况最容易导致程序源代码的稳定性和安全性不高,从而导致一些列的问题。
img src=' https://p9 . toutiaoimg.com/large/3eb 200046 a 26 c 69 C2 cf 6 '/
因此,要想抓住目前p2p借贷行业的发展机遇,正规机构只有依靠稳定安全的p2p借贷程序源代码,同时具备快速开发部署自己的网贷系统的能力,才更有利于抢占网络金融市场。这个要求不仅仅局限于满足平台的常用功能,更重要的是需要有一个可靠、专业的p2p借贷方案体系来保证后期的运营。
具体来说,有了下面提到的内容,你就可以判断系统是否可靠了。首先要具备数据计算和统计准确的特点,准确计算借贷过程中产生的资金运作情况;同时,它可以生成统计数据分析等。其次,具有完善的贷款环节的特点,包括完整的用户认证、贷款和放款流程等。保证用户的方便。还有多模板选择的特点,保证了系统界面简洁明了,易于操作;前台界面简洁,界面清档态新美观,干净整洁,内容模块划分清晰,操作说明图文并茂,直观明了。甚至可以设置完整的积分评级和信用评级功能,从而建立完整的用户积分管理体系,通过积分实现用户信用评级管理。
上述功能的实现只能通过下载网上p2p借贷程序的源代码,对低价或免费获得的p2p借贷程序稍加修改,在网上进行,必然无法满足平台或用户对系统各种复杂功能的需求和要求。正因如此,切记不要为了短暂的利润而忽视用户和平台的安全。
本文来自http://www.diyou.cn/news/a2077.html,英皇官网的一位朋友
说到P2P贷款,对于绝大多数的理财者,应该并不陌生,甚至还有很多的理财者在这两年为此“吃尽了苦头”。因为近些年来,P2P可谓是“爆雷潮”的存在,隔三差五,甚至说是每天都存在着爆雷,理财者也是心惊胆战。P2P网络贷款有着几种方式的呈现:1、贷款需求资金者将资金额度以及年化利率挂在平台上等待出资人进行贷款;2、平台有着资金,然后寻找一些需求资金的贷款者。
这两点,都是存在着“套路”。而P2P网络贷款的道路有哪些呢?如果避免上当受骗呢?
一、P2P网络贷款的套路:
1、模糊不清的日贷款利率、月贷款利率。
日贷款利率0.05%,算多吗?从直观上感觉,才0.05%的幅度,太低了。但是如果计算年利率呢?就算是不滚利的情况下,年化贷款利率就高达18.25%。而银行贷款利率为多少呢?六个月以内为4.35%,六个月至一年为4.35%,一年至三年为4.75%,三年至五年为4.75%,五年以上为4.9%。
日贷款利率0.05%,年化贷款利率是银行五年以上贷款利率的3.72倍!如果是计算滚利呢?那么日贷款利率0.05%滚利计算,年化利率更高,达到20%的幅度。也就是说,一年贷款10万,一年之后就需要还款12万,而三年之后呢?需要偿还17.3万元!
并且,日贷款利率0.05%在P2P网络贷款行业中已经是中下水平的存在,更多的是日贷款利率0.08%、0.1%的行岁源存在,已经达到了高利贷的程度!
月利率的道路与日利率的套路是一样的,都是从数字直观感觉上很小,但是却实际发生的年化贷款利率却很大。
2、不清晰、不公正的协议。
很多在签订协议的时候,网签或者邮寄的合同,说明的内容含糊不清。并且在贷款的过程中,往往是急促行的心态,让贷款者紧张,然后发生贷款。协议根本就不是平等协议,而是不平等,很多情况与先后口头约定的贷款协议严重不符合。并且实际发生的贷款利率会更高,比如说是日贷款利雀御率0.05%,但是却实际要求偿还0.1%的日贷款利率水平。
当然,还有就是还款违约的情况,也是不平等,与约定不符合。如果一旦进行了违约甚至需要翻倍的进行偿还!
3、贷款发生以后,贷款金额与实际贷款金额严重不符合。
近期央视也是大量报道了P2P网络贷款的案例,其中很多案例中有说明,贷款者贷款的资金与实际到账的资金严重不相符合。比如贷款资金为2万元,但是实际到账的只有1.2万元,而其中说到的就是什么金融服务费、什么转账费之类的。如果贷款1年,除了需要正常还贷款利率下的利息,贷款的资金也是受到了极大的损失,一年下来甚至需要还100%的资金!
二、应当如何避免上当受骗?
1、拒绝P2P网络贷款。
最好的办法就是:拒绝P2P网络贷款。现在市场中有很多的贷款方式、信用卡的方式,但更多的资金需求者并不了解。为什么说直接的方法就是:拒绝P2P网络贷款呢?就是因为,网络上的贷款使人根本就看不清,存在的“幺蛾子”实在是太多、太多。虽然这种方法看起来很笨,但却是最简单有效、直接了当的。
当然了,从报道的P2P网络贷款案例来看,最主要的原因是什么呢?其实与贷款者“虚荣”有关系,希望能够买一些奢饰品,短暂生活过得好一些等。所以,直接了当的拒绝P2P网络贷款,也可以说是:拒绝虚荣。
2、仔细阅读贷款协议以及算清楚日贷款利率、月贷款利率。
很多需求资金的贷款者对于细则、协议之类的根本就没有资金的看,很单纯。在加上没有清楚的计算日贷款利率、月贷款利率到底是多少,对于还款的金额上没有概念。所以容易“中招”。
3、经常了解法制报道。
其实市场中很多传播的案例新闻,只有更好的了解这些案例的发生,才能够对于自己有着更为深刻的认为,认为哪些是错误的,哪些是骗人的。这种方式是避免上当受骗最好的教育方式。只有了解了,才会有意识的规避。
作者不易,多多点赞,十分感谢!
‘肆’ c-s和p2p模式混合是什么
C/S和P2P模式混合指的是在网络应用程序中同时使用C/S模式和P2P模式。
C/S模式,即Client/Server模式,是指客户端和服务器端之间进行通信,客户端向服务器端发送请求,服务器端笑悄裂响应并返回数据。
P2P模运察式即Peer-to-Peer模式,是指两个或多个计算机之间直接进行通信,没有中间服务器。
在这种混合碰闭模式中,程序可以在C/S模式下与服务器进行通信,同时也能在P2P模式下与其他客户端进行通信,提高网络应用程序的灵活性和可靠性。
‘伍’ IPFS(四) 源码解读之-p2p
package p2p
import (
"context"
"errors"
"time"
net "gx/ipfs//go-libp2p-net"
manet "gx/ipfs//go-multiaddr-net"
ma "gx/ipfs//go-multiaddr"
pro "gx/ipfs//go-libp2p-protocol"
pstore "gx/ipfs//go-libp2p-peerstore"
p2phost "gx/ipfs//go-libp2p-host"
peer "gx/ipfs//go-libp2p-peer"
)
//P2P结构保存当前正在运行的流/监听器的信息
// P2P structure holds information on currently running streams/listeners
type P2P struct {
//监听器
Listeners ListenerRegistry
//数据流
Streams StreamRegistry
//节点ID
identity peer.ID
//节点地址
peerHost p2phost.Host
//一个线程安全的对等节点存储
peerstore pstore.Peerstore
}
//创建一个新的p2p结构
// NewP2P creates new P2P struct
//这个新的p2p结构不包含p2p结构中的监听器和数据流
func NewP2P(identity peer.ID, peerHost p2phost.Host, peerstore pstore.Peerstore) *P2P {
return &P2P{
identity: identity,
peerHost: peerHost,
peerstore: peerstore,
}
}
//新建一个数据流 工具方法 构建一个有节点id,内容和协议的流
func (p2p P2P) newStreamTo(ctx2 context.Context, p peer.ID, protocol string) (net.Stream, error) {
//30s 后会自动timeout
ctx, cancel := context.WithTimeout(ctx2, time.Second 30) //TODO: configurable?
defer cancel()
err := p2p.peerHost.Connect(ctx, pstore.PeerInfo{ID: p})
if err != nil {
return nil, err
}
return p2p.peerHost.NewStream(ctx2, p, pro.ID(protocol))
}
//对话为远程监听器创建新的P2P流
//创建一个新的p2p流实现对对话的监听
// Dial creates new P2P stream to a remote listener
//Multiaddr是一种跨协议、跨平台的表示格式的互联网地址。它强调明确性和自我描述。
//对内接收
func (p2p P2P) Dial(ctx context.Context, addr ma.Multiaddr, peer peer.ID, proto string, bindAddr ma.Multiaddr) ( ListenerInfo, error) {
//获取一些节点信息 network, host, nil
lnet, _, err := manet.DialArgs(bindAddr)
if err != nil {
return nil, err
}
//监听信息
listenerInfo := ListenerInfo{
//节点身份
Identity: p2p.identity,
////应用程序协议标识符。
Protocol: proto,
}
//调用newStreamTo 通过ctx(内容) peer(节点id) proto(协议标识符) 参数获取一个新的数据流
remote, err := p2p.newStreamTo(ctx, peer, proto)
if err != nil {
return nil, err
}
//network协议标识
switch lnet {
//network为"tcp", "tcp4", "tcp6"
case "tcp", "tcp4", "tcp6":
//从监听器获取新的信息 nla.Listener, nil
listener, err := manet.Listen(bindAddr)
if err != nil {
if err2 := remote.Reset(); err2 != nil {
return nil, err2
}
return nil, err
}
//将获取的新信息保存到listenerInfo
listenerInfo.Address = listener.Multiaddr()
listenerInfo.Closer = listener
listenerInfo.Running = true
//开启接受
go p2p.doAccept(&listenerInfo, remote, listener)
default:
return nil, errors.New("unsupported protocol: " + lnet)
}
return &listenerInfo, nil
}
//
func (p2p *P2P) doAccept(listenerInfo *ListenerInfo, remote net.Stream, listener manet.Listener) {
//关闭侦听器并删除流处理程序
defer listener.Close()
//Returns a Multiaddr friendly Conn
//一个有好的 Multiaddr 连接
local, err := listener.Accept()
if err != nil {
return
}
stream := StreamInfo{
//连接协议
Protocol: listenerInfo.Protocol,
//定位节点
LocalPeer: listenerInfo.Identity,
//定位节点地址
LocalAddr: listenerInfo.Address,
//远程节点
RemotePeer: remote.Conn().RemotePeer(),
//远程节点地址
RemoteAddr: remote.Conn().RemoteMultiaddr(),
//定位
Local: local,
//远程
Remote: remote,
//注册码
Registry: &p2p.Streams,
}
//注册连接信息
p2p.Streams.Register(&stream)
//开启节点广播
stream.startStreaming()
}
//侦听器将流处理程序包装到侦听器中
// Listener wraps stream handler into a listener
type Listener interface {
Accept() (net.Stream, error)
Close() error
}
//P2PListener保存关于侦听器的信息
// P2PListener holds information on a listener
type P2PListener struct {
peerHost p2phost.Host
conCh chan net.Stream
proto pro.ID
ctx context.Context
cancel func()
}
//等待侦听器的连接
// Accept waits for a connection from the listener
func (il *P2PListener) Accept() (net.Stream, error) {
select {
case c := <-il.conCh:
return c, nil
case <-il.ctx.Done():
return nil, il.ctx.Err()
}
}
//关闭侦听器并删除流处理程序
// Close closes the listener and removes stream handler
func (il *P2PListener) Close() error {
il.cancel()
il.peerHost.RemoveStreamHandler(il.proto)
return nil
}
// Listen创建新的P2PListener
// Listen creates new P2PListener
func (p2p P2P) registerStreamHandler(ctx2 context.Context, protocol string) ( P2PListener, error) {
ctx, cancel := context.WithCancel(ctx2)
list := &P2PListener{
peerHost: p2p.peerHost,
proto: pro.ID(protocol),
conCh: make(chan net.Stream),
ctx: ctx,
cancel: cancel,
}
p2p.peerHost.SetStreamHandler(list.proto, func(s net.Stream) {
select {
case list.conCh <- s:
case <-ctx.Done():
s.Reset()
}
})
return list, nil
}
// NewListener创建新的p2p侦听器
// NewListener creates new p2p listener
//对外广播
func (p2p P2P) NewListener(ctx context.Context, proto string, addr ma.Multiaddr) ( ListenerInfo, error) {
//调用registerStreamHandler 构造一个新的listener
listener, err := p2p.registerStreamHandler(ctx, proto)
if err != nil {
return nil, err
}
//构造新的listenerInfo
listenerInfo := ListenerInfo{
Identity: p2p.identity,
Protocol: proto,
Address: addr,
Closer: listener,
Running: true,
Registry: &p2p.Listeners,
}
go p2p.acceptStreams(&listenerInfo, listener)
//注册连接信息
p2p.Listeners.Register(&listenerInfo)
return &listenerInfo, nil
}
//接受流
func (p2p *P2P) acceptStreams(listenerInfo *ListenerInfo, listener Listener) {
for listenerInfo.Running {
//一个有好的 远程 连接
remote, err := listener.Accept()
if err != nil {
listener.Close()
break
}
}
//取消注册表中的p2p侦听器
p2p.Listeners.Deregister(listenerInfo.Protocol)
}
// CheckProtoExists检查是否注册了协议处理程序
// mux处理程序
// CheckProtoExists checks whether a protocol handler is registered to
// mux handler
func (p2p *P2P) CheckProtoExists(proto string) bool {
protos := p2p.peerHost.Mux().Protocols()
for _, p := range protos {
if p != proto {
continue
}
return true
}
return false
}
‘陆’ 什么是p2p网贷平台源码网贷源码有哪些
网贷,又称为p2p网络借贷。P2P是英文peer to peer的缩写,意即“个人对个人”。网络信贷起源于英国,随后发展到美国、德国和其他国家,其典型的模式为:网络信贷公司提供平台,由借贷双方自由竞价,撮合成交。资金借出人获取利息收益,并承担风险;资金借入人到期偿还本金,网络信贷公司收取中介服务费。p2p网贷平台源码基本上是不可能给公开下载的,网上有部分p2p网贷源码泄露了,那源码也是被修改过很多次的了,会隐藏也多bug的。下载安装后期维护成本很高,还不利于二次开发!你可以去看看迪蒙的网贷系统,中国网贷系统第一品牌,安全可靠,功能也很齐全,完全能满足企业定制开发需求。
‘柒’ 常见的p2p网贷源码有几种
常见的p2p网贷源码基桐蚂本上有四种吧,免费或低价购买的p2p网贷源码、自行开发的p2p网贷源码、购买之后又自己二次开发的p2p源码,还有一种就是定制的
个人认为购买的和定制的比较好点,迪蒙网贷系统有它们的对比大轮埋滚蚂,你可以去了解下
记得采纳呀~~~^_^
‘捌’ 以太坊源码分析--p2p节点发现
节点发现功能主要涉及 Server Table udp 这几个数据结构,它们有独自的事件响应循环,节点发现功能便是它们互相协作完成的。其中,每个以太坊客户端启动后都会在本地运行一个 Server ,并将网络拓扑中相邻的节点视为 Node ,而 Table 是 Node 的容器, udp 则是负责维持底层的连接。下面重点描述它们中重要的字段和事件循环处理的关键部分。
PrivateKey - 本节点的私钥,用于与其他节点建立时的握手协商
Protocols - 支持的所有上层协议
StaticNodes - 预设的静态 Peer ,节点启动时会首先去向它们发起连接,建立邻居关系
newTransport - 下层传输层实现,定义握手过程中的数据加密解密方式,默认的传输层实现是用 newRLPX() 创建的 rlpx ,这不是本文的重点
ntab - 典型实现是 Table ,所有 peer 以 Node 的形式存放在 Table
ourHandshake - 与其他节点建立连接时的握手信息,包含本地节点的版本号以及支持的上层协议
addpeer - 连接握手完成后,连接过程通过这个通道通知 Server
Server 的监听循环,启动底层监听socket,当收到连接请求时,Accept后调用 setupConn() 开始连接建立过程
Server的主要事件处理和功能实现循环
Node 唯一表示网络上的一个节点
IP - IP地址
UDP/TCP - 连接使用的UDP/TCP端口号
ID - 以太坊网络中唯一标识一个节点,本质上是一个椭圆曲线公钥(PublicKey),与 Server 的 PrivateKey 对应。一个节点的IP地址不一定是固定的,但ID是唯一的。
sha - 用于节点间的距离计算
Table 主要用来管理与本节点与其他节点的连接的建立更新删除
bucket - 所有 peer 按与本节点的距离远近放在不同的桶(bucket)中,详见之后的 节点维护
refreshReq - 更新 Table 请求通道
Table 的主要事件循环,主要负责控制 refresh 和 revalidate 过程。
refresh.C - 定时(30s)启动Peer刷新过程的定时器
refreshReq - 接收其他线程投递到 Table 的 刷新Peer连接 的通知,当收到该通知时启动更新,详见之后的 更新邻居关系
revalidate.C - 定时重新检查以连接节点的有效性的定时器,详见之后的 探活检测
udp 负责节点间通信的底层消息控制,是 Table 运行的 Kademlia 协议的底层组件
conn - 底层监听端口的连接
addpending - udp 用来接收 pending 的channel。使用场景为:当我们向其他节点发送数据包后(packet)后可能会期待收到它的回复,pending用来记录一次这种还没有到来的回复。举个例子,当我们发送ping包时,总是期待对方回复pong包。这时就可以将构造一个pending结构,其中包含期待接收的pong包的信息以及对应的callback函数,将这个pengding投递到udp的这个channel。 udp 在收到匹配的pong后,执行预设的callback。
gotreply - udp 用来接收其他节点回复的通道,配合上面的addpending,收到回复后,遍历已有的pending链表,看是否有匹配的pending。
Table - 和 Server 中的ntab是同一个 Table
udp 的处理循环,负责控制消息的向上递交和收发控制
udp 的底层接受数据包循环,负责接收其他节点的 packet
以太坊使用 Kademlia 分布式路由存储协议来进行网络拓扑维护,了解该协议建议先阅读 易懂分布式 。更权威的资料可以查看 wiki 。总的来说该协议:
源码中由 Table 结构保存所有 bucket , bucket 结构如下
节点可以在 entries 和 replacements 互相转化,一个 entries 节点如果 Validate 失败,那么它会被原本将一个原本在 replacements 数组的节点替换。
有效性检测就是利用 ping 消息进行探活操作。 Table.loop() 启动了一个定时器(0~10s),定期随机选择一个bucket,向其 entries 中末尾的节点发送 ping 消息,如果对方回应了 pong ,则探活成功。
Table.loop() 会定期(定时器超时)或不定期(收到refreshReq)地进行更新邻居关系(发现新邻居),两者都调用 doRefresh() 方法,该方法对在网络上查找离自身和三个随机节点最近的若干个节点。
Table 的 lookup() 方法用来实现节点查找目标节点,它的实现就是 Kademlia 协议,通过节点间的接力,一步一步接近目标。
当一个节点启动后,它会首先向配置的静态节点发起连接,发起连接的过程称为 Dial ,源码中通过创建 dialTask 跟踪这个过程
dialTask表示一次向其他节点主动发起连接的任务
在 Server 启动时,会调用 newDialState() 根据预配置的 StaticNodes 初始化一批 dialTask , 并在 Server.run() 方法中,启动这些这些任务。
Dial 过程需要知道目标节点( dest )的IP地址,如果不知道的话,就要先使用 recolve() 解析出目标的IP地址,怎么解析?就是先要用借助 Kademlia 协议在网络中查找目标节点。
当得到目标节点的IP后,下一步便是建立连接,这是通过 dialTask.dial() 建立连接
连接建立的握手过程分为两个阶段,在在 SetupConn() 中实现
第一阶段为 ECDH密钥建立 :
第二阶段为协议握手,互相交换支持的上层协议
如果两次握手都通过,dialTask将向 Server 的 addpeer 通道发送 peer 的信息
‘玖’ 什么是混合P2P技术
现状
1. 代表性研发产品和技术
(1) ICQ类的即时通信软件。两个或多个用户互相使用文字、语音或文件进行交流,快速、直接,易于同非PC网络设备(如PDA、手机)通信,而且它不依赖设备即可辨别用户。由于利用P2P技术可以弱化甚至摆脱对中央服务器的依赖,这样的通信更接近非互联网通信模式。
(2) Farsite(Microsoft),Ocean Store类数据存储软件。用于在网络上将存储对象分散化存放,而不像现在放于专用服务器。这样减轻了服务器负担,增加了数据的可靠性和传输速度。
(3) Napster类软件。实现数据共享,使用者可以直接从任意一台安装同类软件的PC上下载及上载文件,而不是从服务器。用户可以检索、复制共享的文件。软件自动发现最新的文件列表,发布者无需担心发布的问题。
(4) Infrasearch、Pointera类数据搜索及查询软件。用来在P2P网中完成信息检索。一旦形成P2P专用网,其上的数据搜索与现在互联网中数据存在中央服务器的情况有所不同,必须要考虑动态地将当前P2P网络中各个Peer的内容进行收集,并且要有效地向用户传递。 P2P网用户中相当数量在联网方式上不同,专线、拨号、宽带、窄带都会碰到; 联网的时间可以一个是24小时在线,而另一个完全可能仅联机几十分钟; 使用的操作系统也不一定相同。
(5) Netbatch(Intel)类协同计算软件。可联接近1万台PC,利用它们的空闲时间进行协同计算,完成超计算量的工作(如空间探测,分子生物学计算,芯片设计)。
(6) Groove 类数据或行动协同软件。它是基于P2P连接的软件工具,可以建立一个安全的企业级协同工作平台(P2P网),提供供求信息链上的互动信息沟通,如货品目录、库存及发货清单,帮助使用者进行经销渠道维护、客户服务和支持。
(7) 游戏软件。事实上许多网络游戏均是P2P方式的,尤其是那些双人及多人对弈游戏。
2. 组织与标准
目前,正式的P2P组织尚未成立,2000年8月间成立的P2P工作组,成员包括Intel、IBM、HP等大企业,目标集中在P2P技术的标准、安全性及可靠性等等。但由于P2P技术本身发展迅速,P2P技术涵盖的范围尚未确定,目前尚未有统一的规范。
发展
1. 关键技术
P2P是一种基于互联网环境的新的应用型技术,主要为软件技术。
(1) 对于互联网上众多计算机,P2P应用比其他应用要更多考虑那些低端PC的互联,它们不具备服务器那样强的联网能力,同时对于以往的P2P应用技术,现在的硬件环境已经更为复杂,这样在通信基础方面,P2P必须提供在现有硬件逻辑和底层通信协议上的端到端定位(寻址)和握手技术,建立稳定的连接。涉及的技术有IP地址解析、NAT路由及防火墙。
(2) 在应用层面上,如果两个Peer分别代表两家不同的公司,而且它们已经通过互联乱吵网建立连接,那么一方的信息就必须为另一方所识别,所以当前互联网上关于数据描述和交换的协议,如XML、SOAP、UDDI等都是一个完善的P2P软件所要考虑的。
(3) 有通信就要有安全保障,加密技术是必须要考虑的。
(4) 其他需考虑的有如何设置中心服务器,如何控制网络规模等。
2. P2P技术与现有互联网技术比较
目前互联网主要技术模式是S/C方式,此方式要在互联网上设置拥有强大处理能力和大带宽的高性能计算机,配合高档的服务器软件,再将大量的数据集中存放在上面,并且要安装多样化的服务软件,在集中处理数据的同时可以对互联网上其他PC进行服务,提供或接收数据,提供处理能力及其他应用。对于一台与服务器联机并接受服务的PC机来说,这台PC机就是客户机,其性能可以相对弱小。而P2P技术的特征之一就是弱化了服务器的作用,甚至取消服务器,任意两台PC互为服务器,同时又是客户机,即对等。右面是P2P与S/C方式的一些比较:
S/C方式造成互联网络上的集中,无论信息资源还是成本资源均向同一方向集中,这样的模式符合一卜芦对多、强对弱的社会关系形式,如政府对个人、对企业,大企业对小企业,学校对学生,企业对职工等等关系。所以S/C方式是符合市场需求的。P2P方式将导致信型陪带息数量、成本资源都向互联网各点均匀分布,也就是所谓“边缘化“的趋势。此模式符合“一对一”的特点,以及彼此相当的社会关系形式,如个人对个人,规模相当的企业之间,等等,这也是符合市场需求的(如ICQ)。所以这两种方式会共存,有关P2P即将替代S/C模式的说法是不成立的。P2P有其独特的市场空间,是现有互联网应用的补充,这一点应该是毫无疑问的。
3. P2P技术特性
(1) 既是S又是C,如何表现取决于用户的要求,网络应用由使用者自由驱动。
(2) 信息在网络设备间直接流动,高速及时,降低中转服务成本。
(3) 构成网络设备互动的基础和应用。
(4) 在使网络信息分散化的同时,相同特性的P2P设备可以构成存在于互联网这张大网中的子网,使信息按新方式又一次集中。
企业应用
应用P2P技术的互联网产品正在迅速开辟出一块新的互联网应用市场,例如ICQ类的即时信息工具不仅创立了一个巨大市场,而且正在多方向地向外扩展,比如在移动通信市场,ICQ产品的多信息格式(文字、语言的支持)和即时性,可以为常规通信增加信息内容(文字、图片)和通信对象(网上ICQ用户)。
另一方面,ICQ的使用也会使部分用户放弃Email,侵蚀Email市场。Napster类的文件共享型P2P产品开拓出网上文件传播的新途径,用户不仅可以进行搜索和下载这样的操作,同时也可以方便地将自己的文件提供给其他用户,做到了基本的双向交流。
由于P2P技术方案不同于S/C方式的特性,可以在许多方面弥补S/C方式的不足,P2P产品将建立互联网上的一种新的应用模式,这时用户不仅在PC装有浏览器,而且还有数种P2P软件来实现新的互联网应用。
比如一个计算机配件经销商可以通过Email或浏览器(如果对方也通过P2P技术发布信息,则也可以用P2P软件)得到其上游厂家最新推出的产品信息及价格,研究了这些信息,并落实订货事宜之后,启动P2P软件,将新的产品及售价发布到重要客户的P2P联络站上,其中一个未上网的用户通过手机也知道了这消息。不久,经销商将收到客户的在线询问,而经销商在线回答问题的同时又将一个驱动程序传给了这个客户。这一切的操作均是通过互联网,而对象是厂家人员或客户,而非其网站或邮箱,这样就真正利用互联网做到了面对面的交流,更加接近现实社会的人际交流习惯。