p2p網絡穿透庫,它的C++版本目前只支持linux,不支持win,它最新版本的穿透用的tcp,老版本支持tcp/udp:
https://libp2p.io/
P2P-udp的穿透教程:
https://edu.51cto.com/lesson/731596.html
目前打洞機制最好的庫是webrtc,其次是libnice,它是輕量級的專門打洞的庫。
libnice的官網和倉庫 srs的webrtc用的就是libnice來實現ICE
https://libnice.freedesktop.org/
https://github.com/libnice/libnice
無法P2P的原因:
這跟NAT的原理有關,NAT設備一般是路由器,會維護一個映射表,NAT后的私有設備會映射到公網的IP和port。當這個私有設備發送給一個公網設備175.169.32.155:1234,NAT還有添加一個映射關系,把之前的IP和port和這個映射,因此當這個公網IP響應時,NAT會查看映射表是否含有這個公網IP,來確定是否接收。NAT不會接收外部設備主動發起的對其私有設備的訪問,它的這套設計邏輯是單向的,只接收它發出去的信息的響應。
P2P