java的P2P打洞通讯学习之路(一)- 整理思路

系列文章目录

基于java的P2P学习之路(一) - 整理思路
基于java的P2P学习之路(二)- 初识webRTC
基于java的P2P学习之路(三)- coturn服务器的搭建



前言

整理了许久,度娘跟阿谷家的门槛都快踩烂了。 今天终于下定决心来公布一下最近的研究成果了。

成果展示


一、啥是P2P?

额,首先这个P2P说的不是互联网金融点对点借贷平台 ,指的是互联网点对点通讯。P2P(peer to peer)点对点技术又称对等互联网络技术,是一种网络新技术,依赖网络中参与者的计算能力和带宽,而不是把依赖都聚集在较少的几台服务器上。
那么为啥打洞呢?
IPV4地址不够用,这只是其一,如果站在服务器端的话就明白了,A跟B通讯要经过服务器进行转发做介绍人。但如果全部都要经过服务器转发才能实现通讯,那对服务器的压力就太大了。所以需要用到打洞技术,P2P有个很重要的能力,内网穿透能力,具有这个能力后,不同私网的设备可以直接进行通信。
关于p2p的介绍就不废话了,很多大佬写的比我详细多了。
我这边主要汇总一下我这边路上遇到的坑,和整体技术。

二、框架架构

1.通讯打洞层

基于java的P2P学习之路(三)- coturn服务器的搭建

2.信令交互层

socket-io webRTC

基于java的P2P学习之路(二)- 初识webRTC

3. 基于springboot-netty-socketIo

基础框架springboot 继承netty-socket-io

4.工具准备

编写工具idea 服务器linux

总结

提示:这里对文章进行总结:
以上就是今天要讲的内容,本文仅仅简单介绍了P2P技术的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

扫描二维码
扫描二维码,关注“无与伦比的傻”公众号

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
UDP打洞是一种P2P通信的技术,可以让两个在NAT后面的设备直接进行通信。下面是一个简单的Java UDP打洞的示例代码: ``` import java.net.*; public class UdpHolePunching { public static void main(String[] args) throws Exception { // 定义两个NAT后面的设备的IP和端口 InetAddress client1IP = InetAddress.getByName("192.168.1.100"); int client1Port = 5000; InetAddress client2IP = InetAddress.getByName("192.168.1.101"); int client2Port = 5000; // 创建两个UDP socket,分别绑定在两个设备的IP和端口上 DatagramSocket socket1 = new DatagramSocket(client1Port, client1IP); DatagramSocket socket2 = new DatagramSocket(client2Port, client2IP); // 客户端1向客户端2发送一条消息,用来获取NAT的映射关系 String message = "Hello, Client2"; DatagramPacket packet = new DatagramPacket(message.getBytes(), message.length(), client2IP, client2Port); socket1.send(packet); // 客户端2向客户端1发送一条消息,用来获取NAT的映射关系 message = "Hello, Client1"; packet = new DatagramPacket(message.getBytes(), message.length(), client1IP, client1Port); socket2.send(packet); // 等待一段时间,让NAT完成端口映射 Thread.sleep(1000); // 客户端1向客户端2发送一条消息,让两个设备之间建立P2P连接 message = "Let's start P2P communication!"; packet = new DatagramPacket(message.getBytes(), message.length(), client2IP, client2Port); socket1.send(packet); // 客户端2向客户端1发送一条消息,让两个设备之间建立P2P连接 message = "OK, let's do it!"; packet = new DatagramPacket(message.getBytes(), message.length(), client1IP, client1Port); socket2.send(packet); // 关闭socket socket1.close(); socket2.close(); } } ``` 这个示例代码中,我们创建了两个UDP socket,分别绑定在两个设备的IP和端口上。然后,客户端1向客户端2发送一条消息,客户端2向客户端1发送一条消息,用来获取NAT的映射关系。等待一段时间后,客户端1向客户端2发送一条消息,让两个设备之间建立P2P连接,客户端2向客户端1回复一条消息,表示同意建立P2P连接。最后,关闭socket。 需要注意的是,这个示例代码只是一个简单的UDP打洞的示例,实际应用中,UDP打洞还需要考虑到更多的因素,比如NAT类型、防火墙等等,需要更加复杂的技术实现。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无与伦比的傻

微信公众号:dasha500

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值