c++ - UDP NAT穿越

标签 c++ sockets udp nat

我有一台 PC 和一部手机,我正在尝试通过 3G 在两者之间建立双向通信。

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

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

我看到数据包到达了我的 PC,非常完美。所以现在我想从 PC 向手机发回通信。我通过“recvfrom”获得了地址和端口,然后执行 sendto 返回到我从中接收数据的地址和端口。

然而,手机没有接收到这些数据。我假设传入通信未被移动提供商网络上的 NAT 框重定向。

这是为什么?我想看到我已经从电话发起通信,我应该能够沿着那条路线返回以与电话通信?

那么,我该如何让它发挥作用呢?

任何想法表示赞赏!

最佳答案

好吧,我确实弄清楚了我做错了什么。我正在从电话与 PC 的端口“x”进行通信,然后尝试通过端口“y”以另一种方式返回。两种方式使用相同的端口允许进行通信:)

关于c++ - UDP NAT穿越,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4397837/

相关文章:

windows - UDP 数据包,被 Wireshark 看到,被(甚至没有到达)WSARecvFrom 丢弃

ubuntu 上的 Python UDP 服务器不工作

sockets - 如何选择客户端的本地端口

c++ - 方便的断言检查策略

c++ - 尝试在 C++ 函数中添加数组的整数失败

c++ - 获取连接元组类型;结合 result_of 和 tuple_cat

java - 在运行时用 TCP 套接字替换打洞/STUN UDP 套接字

c++ - C++ 中基类地址的保证?

python - Python Django-如何同时支持Socket和API

java - 我有两个 android 应用程序,一个可以在特定 IP 上通过 LAN 发送字符串,另一个应用程序用于接收,但我想通过 LAN 广播字符串?