P2P打洞java源代码
首先判断是否可以直连,可以直连,表明内网环境,直接通讯。否则需要一个中间人的角色:Server。所以打洞的过程如图所示:
主要流程是这样的:
(1)如果A想与B通信;
(2)A首先连接C,C得到A的外网NAT A的地址和端口;
(3)B也要连接C,C得到B的外网NAT B的地址和端口;
(4)A告诉C说我要和B通讯;
(5)C通过NAT B发信息给B,告诉B A的外网NAT A的地址和端口;
(6)B向NAT A发数据包(肯定会被NAT A丢弃,因为NAT A上并没有 A->NAT B 的合法session),但是NAT B上就建立了有B->NAT A的合法session了;
(7)B发数据包给C,让 C 通知 A,我已经把洞打好了;
(8)A接受到通知后向 B 的外网发NB数据包,这样就不会被丢弃掉了。因为对于NAT B来说,它看到的是A的外网NAT A的地址,而通过第6步,B已经让NAT A成为NAT B的合法通信对象了。所以当NAT A发数据包给NAT B时,NAT B就会接收并转发给B;
说明:只适应某些路由。
代码地址:
https://gitee.com/lgcjava/p2pnats.git
联系方式:
QQ:153277817
P2P打洞java源代码相关推荐
- p2p打洞源码,p2p内网穿透源码,NAT内网穿透源码,NAT穿透源码
一.p2p是什么? p2p是点对点的缩写(peer-to-peer networking),其可以定义为:端对端的资源共享,每一端即可是服务端,也可以是客户端.既可以是资源的提供者,也可以是资源的共享 ...
- UDP 构建p2p打洞过程的实现原理(持续更新)
UDP 构建p2p打洞过程的实现原理(持续更新) 发表于7个月前(2015-01-19 10:55) 阅读(433) | 评论(0) 8人收藏此文章, 我要收藏 赞0 8月22日珠海 OSC 源创 ...
- Java 源代码和 C 源代码的运行区别
与其他程序的执行方式和编译方式不同. Java 源代码需要进行编译成字节码后在 Java 虚拟机上运行,这样 Java 程序能够保持独立性和跨平台功特性. 请参考下图. https://www.cwi ...
- Android APK反编译得到Java源代码或资源文件
一.反编译Apk得到Java源代码 首先要下载两个工具:dex2jar和JD-GUI,前者是将apk中的classes.dex转化成Jar文件,而JD-GUI是一个反编译工具,可以直接查看Jar包的源 ...
- 做一个p2p打洞的C#程序
做一个p2p打洞的C#程序 转载于:https://www.cnblogs.com/cuihongyu3503319/archive/2011/03/15/1985021.html
- 解析java源代码_一步步解析java执行内幕
对于任何一门语言,要想达到精通的水平,研究它的执行原理(或者叫底层机制)不失为一种良好的方式.在本篇文章中,将重点研究java源代码的执行原理,即从程 序员编写JAVA源代码,到最终形成产品,在整个过 ...
- 转jpg java源程序_将pdf文件转成图片并删除java源代码
将pdf文件转成图片并删除java源代码/** * 将pdf转成img */ public static void changePdfToImg() { try { File file = new F ...
- jdk12源代码文件_JDK 11:轻松取出单文件Java源代码程序
jdk12源代码文件 JDK 11 Early Access Builds包含与JEP 330相关的预览功能("启动单个文件源代码程序"). 我之前在" Shebang即 ...
- JDK 11:轻松取出单文件Java源代码程序
JDK 11 Early Access Builds包含与JEP 330相关的预览功能("启动单个文件源代码程序"). 我之前在" Shebang即将来到Java? &q ...
最新文章
- maemo环境安装问题和解决方案(ubuntu 10.04)
- java耗时任务有哪些,java后台耗时任务多线程返回结果
- Spring入门详细教程(四)
- makefile中的函数
- 启明云端分享| 基于SSD201核心板的4.3寸彩屏开发板接口相关说明
- X509Certificate2 本地正常,放到线上内部错误
- ajax请求, 前后端, 代码示例
- 测试点4错的来:1029 旧键盘 (20分)
- TextView does not support text selection. Selection cancelled. 。TextViews复制文本失效解决方法
- 企业数字化新战场:低代码究竟是“毒瘤”还是“良药”?
- Qt_发送邮件(以qq邮箱为例)
- 网页自动加拼音html,HTML5给汉字加拼音收起展开组件的实现代码
- java视频生成缩略图_Java中使用ffmpeg生成视频缩略图
- Ubuntu 下启用trackPoint
- 数据治理---Apache Atlas元数据管理
- 中科院ICTCLAS分词汉语词性标记集
- Threejs实现3d地球记录(1)
- NVIDIA Jetson之OTA远程升级Jetpack
- C++图书管理系统_艾孜尔江撰
- html5随鼠标移动动画,使用JS实现气泡跟随鼠标移动的动画效果
热门文章
- SQL Server数据库系列——锁和并发
- 服装ERP系统下的成本计算如何及时有效
- 《剑指offer》41~45
- java写七彩文字_AE实现七彩闪动文字效果
- 华硕网吧服务器型号,网吧应用新平台 华硕P7F-C-SAS引领网吧服务器市场
- 浙江工业大学计算机/软件工程 考研
- SQL Servr 2008空间数据应用系列七:基于Bing Maps(Silverlight) 的空间数据展现
- html 超链接ppt,HTML和超链接.ppt
- 郑正中:中国商业智能的应用特点
- 恶意网址virus.html,恶意样本查找