p2p

t-io Java构建p2p网络

大城市里の小女人 提交于 2020-02-13 01:54:01
Java 构建p2p网络 这篇文章是一篇关于pbft算法实现的一篇补充文章,但是在这里不会涉及pbft的算法方面,所以可以当做一篇单独的文章食用。如果想查看关于区块链或者PBFT算法的文章,可以参考一下我的 文章 。 文章实现范围 这篇文章是构建一个p2p网络,需要拥有独立的ip地址(当然如果是在局域网内使用就无所谓了),不会涉及到内网穿透的一些实现方法,也就是说如果你是把自己电脑构建了一个p2p结点,则其他人的电脑是无法链接你电脑的结点的。 预备知识 p2p网络中,一个结点既是客户端也是服务端,可以实现任意时刻的双向的通信。因此在每个结点中,会维护一张客户端的表和一张服务端的表。我们可以从代码的方面来理解一下这个东西,如下图所示: 两个被方框圈住的表则是需要维护的表,如果在代码中的话,我们就可以使用List去保存这张表 客户端的表我们可以用来发送消息,而服务端的表我们可以用来控制群发。 这里我们可以解释和理解一下何为p2p。举例: 结点1想与结点2进行通信时:A1跑出来说,我有到结点2的通道,然后向结点2发出 request ,结点2的服务端接收到结点1(A1)发出来的消息的时,进行response。 这个时候,可能就会有人问:为什么不是结点1的服务端向结点2发出request呢,然后结点2再向服务端返回response?yes,这个是可以的,并且能够成功

Android WebRTC 音视频开发总结(三)-- 信令服务和媒体服务

江枫思渺然 提交于 2020-02-08 09:47:05
前面介绍了WebRTCDemo的基本结构,本节主要介绍WebRTC音视频服务端的处理,,转载请说明出处(博客园RTC.Blacker)。 通过前面的例子我们知道运行WebRTCDemo即可看到P2P的效果,实际应用中我们不可能让用户自己去里面设置对方的IP和音视频端口, 而且即使设置了对方的IP和端口也不一定能运行起来,因为P2P如果双方不在同一个网段则还需穿透NAT,那服务端具体该如何部署呢? 1、信令服务: 想知道信令服务的作用前您先想想通讯双方彼此都不知道对方在哪里,怎么与对方建立连接,怎么给对方发起视频请求? 想到这里我们是不是会想到双方都应该先跟一个服务器建立连接,所以这就是信令服务的作用,具体如下图: 2、打洞服务:打洞的原理理解了其实很简单,主要思路就是通过STUN服务器获取自己的ip,port及NAT信息, 然后通过信令服务器交换这些信息,最后两客户端根据各自得到的ip,port,NAT信息进行相应的穿透, 现在开源STUN代码很多,网上也有很多介绍这方面的问题,有兴趣的可以找相关资料看看. 补充:不过对NAT进步一研究你会发现内网下多重NAT穿透是个比较麻烦的事情,网上有一些专门研究多层NAT穿透的论文, 正因为STUN方式不能完全解决P2P问题,所以后面出现了ICE,而 libjingle就是ICE思想的具体实现。 3、媒体转发服务:P2P失败时

How can I receive data with a peerJS peer to peer connection?

不羁的心 提交于 2020-02-02 07:15:46
问题 I'm trying to connect two peers using peerJS. I am pretty much just following through their "Getting Started" but I am still struggling. Below is the code that I have gotten so far. <body> <script src="http://cdn.peerjs.com/0.3/peer.min.js"></script> <script> var conn; var peer = new Peer({key: 'lwjd5qra8257b9'}); peer.on('open', function(id){ console.log('My peer ID is:' + id); document.getElementById('peerIdDisplay').innerHTML = '<b>My peer ID is: </b><font color="red">' + id + '</font>'; }

How can I receive data with a peerJS peer to peer connection?

夙愿已清 提交于 2020-02-02 07:14:47
问题 I'm trying to connect two peers using peerJS. I am pretty much just following through their "Getting Started" but I am still struggling. Below is the code that I have gotten so far. <body> <script src="http://cdn.peerjs.com/0.3/peer.min.js"></script> <script> var conn; var peer = new Peer({key: 'lwjd5qra8257b9'}); peer.on('open', function(id){ console.log('My peer ID is:' + id); document.getElementById('peerIdDisplay').innerHTML = '<b>My peer ID is: </b><font color="red">' + id + '</font>'; }

udp packet loss and recovery

妖精的绣舞 提交于 2020-02-01 08:53:05
问题 I am working on both udp/tcp based P2P for file and real time video streaming application.the application will be developed for both Linux and windows platform using c++. We are using ICE(TCP/UDP hole punching) to implement the P2P. while TCP ensure the packet loss but for UDP I need a decent approach to make sure packet must be delivered to the other peer. I wanted to know the algorithm or technique to do this. Is there any free thord party tool/libraries to do. Any link and suggestion will

How to make connection over WiFi when working with Gamekit?

江枫思渺然 提交于 2020-02-01 04:26:19
问题 I want to make connection between two devices over WiFi using GameKit. Apple's documentation says If an Internet connection is chosen, your application must dismiss the peer picker dialog and present its own user interface to complete the connection. This is what i do - (void)peerPickerController:(GKPeerPickerController *)picker didSelectConnectionType:(GKPeerPickerConnectionType)type { if (type == GKPeerPickerConnectionTypeOnline) { picker.delegate = nil; [picker dismiss]; [picker

EOS系列 - 源码解读心得 - P2P网络模块

房东的猫 提交于 2020-01-31 15:15:01
EOS P2P 网络模块 P2P - Gossip Gossip算法又被称为反熵(Anti-Entropy),熵是物理学上的一个概念,代表杂乱无章,而反熵就是在杂乱无章中寻求一致,这充分说明了Gossip的特点:在一个有界网络中,每个节点都随机地与其他节点通信,经过一番杂乱无章的通信,最终所有节点的状态都会达成一致。每个节点可能知道所有其他节点,也可能仅知道几个邻居节点,只要这些节点可以通过网络连通,最终它们的状态就都是一致的,当然这也是疫情传播的特点。 如何发现节点 节点会记住它最近成功连接的网络节点,当重新启动后它可以迅速与先前的对等节点网络重新建立连接。 节点会在失去已有连接时尝试发现新节点。 当建立一个或多个连接后,节点将一条包含自身 IP 地址消息发送给其相邻节点。相邻节点再将此消息依次转发给它们各自的相邻节点,从而保证节点信息被多个节点所接收、保证连接更稳定。 新接入的节点可以向它的相邻节点发送获取地址 getaddr 消息,要求它们返回其已知对等节点的 IP 地址列表。节点可以找到需连接到的对等节点。 在节点启动时,可以给节点指定一个正活跃节点 IP, 如果没有,客户端也维持一个列表,列出了那些长期稳定运行的节点。这样的节点也被称为种子节点(其实和 BT 下载的种子文件道理是一样的),就可以通过种子节点来快速发现网络中的其他节点。 Gossip邻居交换协议:

【P2P网贷新手入门】详解借款标的种类及其风险

ε祈祈猫儿з 提交于 2020-01-26 01:28:08
不同于国外的网贷平台以信用借款标为主,在中国,我们投资网贷平台会看到多样借款标,而投资人往往弄不清自己投资的标属于什么类型的标,特点怎么样,风险如何。 抵 押 标 定义:借款人用自己的房屋车辆等实物在平台进行抵押后所发布的借款标。抵押物需要经过评估并在相关部门(房管局或车管所)办理抵押登记手续。对于抵押物,平台大都采取非足值抵押,一般为抵押物评估净值的60%-80%。 特点:平台借款标显示标记“押”,抵押标是经过网站经过严格核查借款人资产负债,根据借款人的信用状况,签订抵押担保手续,借款人必须在约定期限内如数归还借款否则出借人有权处理抵押物用以偿还约定的借款本金利息罚息违约金等其他费用。相比其他借款标,假若平台发布的借款标都是真实,有抵押物的借款标相对更安全 风险:抵押标主要有两方面的风险,一是由于信息的不对称,借款者有可能伪造资料,抵押物重复抵押,存在骗贷的可能,另一方面则是平台对抵押物估值不当,贷款额度虚高等问题。所以,对于抵押标,投资者一需要查看借款标是否真实,抵押手续是否完善,是否在相关部门办理备案手续,并且要注意平台对抵押物的估值是否存在虚高的现象。 担 保 标 定义:由个人或第三方机构对借款人的借款提供担保而发布的借款标的,一旦借款人出现逾期未还款的情况,担保人或担保机构有责任对其担保的借款项目承担垫付、追偿等连带责任。 特点:担保借款标通常标记“担”字

How to directly use Twilio TURN server for Android (Server, Client)

馋奶兔 提交于 2020-01-24 21:31:05
问题 I have libstreaming RTSP server on Android device (open some port and wait for client p2p connection). I'm able to connect to the server via local network. For outside p2p connection I have to use STUN / TURN. I read a lot about Twilio. They wrote about TURN server: NETWORK TRAVERSAL, but didn't actually provide clear example of how to use it. They have some ready solutions I don't need. Is it possible to use Twilio directly as TURN server for video streaming, without any additional

Can Silverlight do peer-peer comms without a server or ship a “local server”?

一个人想着一个人 提交于 2020-01-24 13:13:22
问题 I'm discussing Silverlight (v4 onwards) as a possible platform for a program that will need two instances to communicate directly. As far as I can tell, this is still not possible with the SL sockets assumptions of client-server comms. Assume it is for a highly interactive two-player game and you will have a good idea of the performance requirements. It doesn't need to scale to thousands of users with the same server so the performance and scaling issues which concern most people are