以前早期的时候 p2p 软件的 NAT 穿透(打洞)这些感觉都是自己实现,属于比较核心的技术。现如今这么多年了,NAT 穿透(打洞)有没有比较好的 c/c++开源的实现呢,TCP 和 UDP 两种都实现的那种?网上找的都是理论验证性的代码,感觉不是太完善。
![]() | 1 junmoxiao 2022-05-09 10:50:48 +08:00 nebula n2n |
![]() | 2 acbot OP @junmoxiao 我看这两个都是成熟的组网应用,我这边的需求是自己的软件中,可能需要涉及到 NAT 穿透这种功能,你的意思是从中剥离出我要的功能吗? |
![]() | 3 allinQQQ 2022-05-09 11:20:49 +08:00 |
![]() | 4 xdeng 2022-05-09 11:21:01 +08:00 同求 同好奇 没有比较好的开源的 p2p 库 |
![]() | 5 mjikop1231 2022-05-09 11:21:13 +08:00 |
6 felixlong 2022-05-09 11:43:06 +08:00 webrtc https://webrtc.org/ |
![]() | 7 villivateur 2022-05-09 12:09:31 +08:00 via Android 要不看下 STUN 服务器的实现? |
8 nicevar 2022-05-09 12:15:43 +08:00 c/c++的没用过,java 版本的 stun 在某大型公司项目上用过,用于管理终端设备。 |
9 microxiaoxiao 2022-05-09 12:41:45 +08:00 via Android c/c++参考 webrtc 解决方案。具体而言:ice stun turn libnice 。完整的就是 libnice 实现了 ice ,ice 管理了 stun turn ,stun 针对能打通的情况,turn 针对打不通的情况。需要理解为啥要这么多玩意,那就看 NAT 四种类型。完整的思路就看 libnice 即可,webrtc 太复杂了 |
10 hhjuteman 2022-05-09 14:23:51 +08:00 stun/turn |
![]() | 11 acbot OP @villivateur @hhjuteman 大佬,这个说的太笼统了,stun/turn 网上找的都是理论验证性的代码,感觉不是太完善。因为自己不擅长网络这块所以才想找个成熟得开源库或者是可以从其他项目玻璃的模块直接用。 |
![]() | 12 acbot OP @microxiaoxiao 好的,我重点看一下 libnice ,谢谢! |
13 hhjuteman 2022-05-09 15:42:21 +08:00 ![]() @acbot 不知道你需要什么 如果是理论知识 rfc8445, rfc 5389, rfc 5766 如果是搭建一个反射 /中继服务器,那么 coturn 无疑开源里最好的 自己做客户端能用的库就很多了 libnice libjuice ,libnice 依赖 glib ,你能接受的话就用 libnice ,libjuice 没有实现 rfc 的 tcp 扩展,但是对接标准使用没有问题,也没有 glib 这种重依赖。 |
![]() | 14 acbot OP @hhjuteman 是不是 可以这样理解,自己的应用集成 libnice ,然后使用公共的 stun/turn ice 标准的服务器或者说是使用 coturn 自己搭建一个服务器, 这样的话就自己的应用就可以实现 NAT 穿透(打洞) |
![]() | 15 sbilly 2022-05-09 16:14:00 +08:00 搭车问一下。golang 有比较好的实现吗? UDP TCP 都支持的 |
![]() | 16 NealLason 2022-05-09 16:47:22 +08:00 |
18 vip1024 2022-05-09 20:12:11 +08:00 |
![]() | 20 sbilly 2022-05-10 14:12:12 +08:00 |
21 hadesjaky0607 2022-05-10 16:54:10 +08:00 @wym0823 这个可以,不依赖平台 |
![]() | 22 openp2p 2022-05-16 15:39:13 +08:00 自荐一个 https://github.com/openp2p-cn/openp2p 支持 Cone, Symmetric (NAT1-4), UPNP, IPv6 |
![]() | 23 openp2p 2022-05-29 16:16:07 +08:00 @sbilly https://github.com/openp2p-cn/openp2p/ UDP TCP Symmetric 打洞 UPNP IPv6 都支持 |
25 libinglong9 2022-09-01 00:44:10 +08:00 via iPhone @openp2p server 也开源吗? |
26 riceball 2023-02-14 15:01:00 +08:00 用于构建 P2P 网络的模块化网络堆栈和库(全): https://libp2p.io/ 包括打洞协议 |