3

我有 2 个 ubuntu 系统 A 和 B。

A的IP地址是192.168.0.5 B的IP地址是192.168.0.3

系统 A 运行 Android 模拟器。我有一个 TCP 客户端应用程序,它必须与系统 B 通信。

由于 Android 应用程序只能“看到”本地主机(如 10.0.2.2),因此客户端应用程序在端口 Pb 处向 10.0.2.2 发送消息。

现在我假设系统 A 应该注意它在端口 Pb 的本地主机(即 127.0.0.1,对于模拟器的 10.0.2.2)接收到的任何消息都必须转发到端口 Pb 的系统 B 192.168.0.3。因此,我在系统 A 上设置了以下内容:

echo "1" < /proc/sys/net/ipv4/ip_forward

sudo iptables -t nat -A PREROUTING -p tcp -s 127.0.0.1 -d 127.0.0.1 --dport Pb -j DNAT --to-destination 192.168.0.3: Pb

系统 B 在 IP 192.168.0.3 和端口 Pb 上运行 TCP 服务器

在系统 A 和 B 上设置这些规则后,我在系统 A 上启动 android Emulator,然后在 Andoid 上启动 TCP 客户端应用程序。

Wireshark 工具显示到达 127.0.0.1 的包,但我在系统 B 的服务器根本没有收到任何包:(

怎么了?

--------------------              --------------------------

  System A                        System B
  192.168.0.5 wlan0               192.168.0.3 wlan0
  127.0.0.1   lo                  127.0.0.1 lo
                <---------------->

  Android EMULATOR                TCP Server
  TCP CLient App                  at 192.168.0.3, port Pb
  at 10.0.2.2
----------------------            ----------------------------

请帮忙。

4

0 回答 0