我想连接两个位于不同位置但连接到互联网的设备,一台运行Windows 10的计算机和一个智能手机android。该应用程序是一个简单的UDP套接字,用于在它们之间传输数据,但是我有不同的情况。
第一种情况。在3G / 4G CG-NAT之后具有公共IP和智能手机的PC) PC会打开UDP套接字,智能手机将轻松,快速地连接到公共IP。
第二种情况。带有公共IP的NAT后面的PC和位于3G / 4G NAT的智能手机后面的智能手机)
选项A)PC将端口转发到NAT的端口配置为其内部IP,然后Smartphone将连接到该公共IP。简单但不快速,因为客户端必须配置NAT。
选项B)使用UDP HOLE PUNCHING在NAT上打一个孔,然后客户端将其连接。
第三种情况。 PC和智能手机都落后于CG-NAT。 这是我的问题,PC有时位于CG-NAT后面,可能是因为ISP使用了此技术,或者可能是使用其他智能手机的Wifi热点连接到Internet。 据我所知,我无法使用任何协议(UPnP,PCP等)配置CG-NAT,因此我无法进行端口转发。由于“端口随机化”,UDP穿孔也不是一种选择,因此ISP在CG-NAT之外时更改了我的源端口,并且每次连接都会更改。
我正在开发一个依赖于此的项目,无需技术细节即可直接在PC和智能手机之间建立连接,并且始终致力于使两个客户端都具有互联网,不必担心是否经过防火墙保护,在NAT后面等等。 我当时正在考虑使用带有公共IP的第三台云服务器来连接它们,但只是为了建立连接,而不是转发所有流量,因为这增加了我的项目的延迟和流量成本,这是无法承受的。 所以……有什么技术可以解决我的问题吗?
谢谢!