Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ UDP NAT遍历_C++_Sockets_Udp_Nat - Fatal编程技术网

C++ UDP NAT遍历

C++ UDP NAT遍历,c++,sockets,udp,nat,C++,Sockets,Udp,Nat,我有一台电脑和一部手机,我正试图通过3G在两台电脑之间建立双向通信 在PC端,我可以完全控制NAT。因此,我将特定端口上的传入通信映射到桌面上的PC 然后用我的特定端口发送到我们PC网络的外部IP地址 我看到数据包到达我的电脑,这是完美的。所以现在我想把一个通讯从PC发送回手机。我通过一个“recvfrom”获得了地址和端口,然后我通过发送返回到我接收数据的地址和端口 但是,手机不会接收到这些数据。我假设传入的通信没有被移动提供商网络上的NAT盒重新定向 为什么会这样?我想,既然我已经开始通过手

我有一台电脑和一部手机,我正试图通过3G在两台电脑之间建立双向通信

在PC端,我可以完全控制NAT。因此,我将特定端口上的传入通信映射到桌面上的PC

然后用我的特定端口发送到我们PC网络的外部IP地址

我看到数据包到达我的电脑,这是完美的。所以现在我想把一个通讯从PC发送回手机。我通过一个“recvfrom”获得了地址和端口,然后我通过发送返回到我接收数据的地址和端口

但是,手机不会接收到这些数据。我假设传入的通信没有被移动提供商网络上的NAT盒重新定向

为什么会这样?我想,既然我已经开始通过手机进行通信,我应该能够沿着这条路线回去与手机通信

那么,我如何让它工作呢


任何想法都很感激

我确实发现了我做错了什么。我正在从手机与PC的端口“x”进行通信,然后尝试从另一个端口“y”返回。对两种方式使用相同的端口可以实现通信:)

我确实发现了我做错了什么。我正在从手机与PC的端口“x”进行通信,然后尝试从另一个端口“y”返回。使用相同的端口进行双向通信:)

您可能想看看您是否使用与
recvfrom()
相同的套接字进行
sendto()
?需要有关网络布局的更多详细信息。例如,我可能是错的,这听起来不像你在PC机上的NAT做了正确的事情。IP数据包通过NAT从pc中传出,其源IP地址映射到外部接口上的地址。嘿,我也遇到了与此主题相关的问题。我正在用android做一个聊天应用。我成功地连接到同一路由器内的设备,但在不同网络之间连接时失败。我是网络新手,请帮帮我。原谅我在这里问我的问题,我刚才看到你在做和我一样的事情。@SagarNayak:你应该问另一个问题。你正在寻找NAT隧道,这是一个极其复杂的问题。大多数人通过在这两个设备之间放置一个可公开访问的服务器来实现这一点。您可能想看看您是否使用了与您过去使用的
recvfrom()
相同的套接字来连接
sendto()
?需要更多有关网络布局的详细信息。例如,我可能是错的,这听起来不像你在PC机上的NAT做了正确的事情。IP数据包通过NAT从pc中传出,其源IP地址映射到外部接口上的地址。嘿,我也遇到了与此主题相关的问题。我正在用android做一个聊天应用。我成功地连接到同一路由器内的设备,但在不同网络之间连接时失败。我是网络新手,请帮帮我。原谅我在这里问我的问题,我刚才看到你在做和我一样的事情。@SagarNayak:你应该问另一个问题。你正在寻找NAT隧道,这是一个极其复杂的问题。大多数人通过在两台设备之间放置一个可公开访问的服务器来实现这一点,该服务器负责协商两台设备之间的连接。