两个esp8266应该怎么通过内网穿透实现udp远程通信呢

局域网内,两个eso8266连接电脑开的热点,其中A发送给B的ip地址数据,B绑定和A同个端口。现在想通过内网穿透,将电脑的ip地址映射出去,发现B接收不到数据。

查看后发现电脑映射的ip地址为10开头,而电脑开热点给8266连接,8266ip地址为192.168开头,请问应该如何才能将A的数据发送给B接收,目前只能做到A发送给电脑端,而B 8266收不到数据。

一个思路

一个思路,不确定是否可行,你可以试试
因为A、B都可以跟电脑互通数据,
所以,将电脑作为中间转发的工具,
1、A发送数据给电脑IP 的一个端口
2、然后电脑通过nginx反向代理或者负载均衡都行,将这个IP地址和端口获取到的数据转发到B的IP地址端口号上

注:记得开放对应端口


如有问题及时沟通

内网穿透必须借助外部服务器才能实现,一个有公网IP的主机。你那个电脑的IP,10开头的,明显是个运营商提供的局域网IP,不是公网IP,无法实现穿透,实际上现在的运营商基本都不提供公网IP了,即使是那些看起来像公网IP的,实际上也是伪公网IP。可以考虑租借一个服务器,通过服务器实现穿透,或者简单的数据转发。如果不舍得花这个钱,可以考虑用ZeroTier或者花生壳之类的免费内网穿透工具,自己多研究下。

你说的“一个连接电脑开的热点,并将电脑的ip地址通过内网穿透映射出去,得到一个映射后的ip地址”,你是发射给谁的?谁知道这个IP地址?你是指发给一个公网服务器吗?如果是,说明你大概了解点穿透原理了(如果不是,我也不知道你在搞什么了),但是,仅仅知道这个IP地址是不够的,还需要知道源端口号,另一个8266必须向这个IP和端口号的组合发送数据,另外一边才可能收到(同时,另一边也不能随便侦听另一个端口,只能用发起通讯的那个端口),这就是NAT穿透,而且,这样还未必能成功,详细描述请参考NAT内网穿透原理。内网穿透可以节约服务器流量,减少延迟,因为数据不需要服务器转发,但是不能保证100%穿透成功,所以实际做产品的时候,都会考虑穿透不成功的情况下,通过服务器转发。对于数据量不大,不需要特别高的实时性,特别是服务器还希望监控一下数据的场合,建议直接用服务器转发,而不是穿透。

可能我没叙述清楚,我想实现两个esp8266用udp远程通信,esp8266 A 连接手机热点,B连接电脑热点。我将B的电脑端ip和自定义端口号(10.xxxx+1234)通过内网穿透工具(花生壳)映射成一个公网地址(103.xxx+40657),那么我再esp8266 A这一端向这个公网地址(103.xxx+40657)发送数据,就等于我向电脑端ip和自定义端口号(10.xxxx+1234)发送数据了吗,但是我实际是想发送给连接电脑热点esp8266B。esp8266B只能侦听分配的ip地址+端口(1192.168.xxx),所以收不到数据。那么我应该怎么做才能实现esp8266B收到数据呢?