在我的设置中,我有两个应用程序.一个运行在我的macbook本地模拟器上.另一个在我的物理Android手机上.
在这些应用程序中,我使用ZeroMQ来获得一个Req/Rep套接字,其背后使用的是TCP.
当使用端口6543在模拟设备上托管我的服务器时,它的IP为wlan0,我无法从我的手机连接到它. 在电话承载服务器和模拟器连接到它的地方,角色颠倒工作正常,但从长远来看,我需要模拟器来运行这个服务器.最终,iOS开发人员希望与Android服务器对话,所以我更希望他们使用模拟器来实现这一点.
我的理解是android emulators exist behind a virtual router,所以如果你想和他们说话,你必须使用端口转发.
我已经为我的模拟器做了这个.使用redir add tcp:7654:6543
. 如果我理解正确,那么我的Macbook端口7654应该有它的流量重定向到我的模拟器端口6543.
而不是直接连接到我的模拟器上的IP wlan0
,我认为我应该使用我的Macbook的IP.为此,我运行ifconfig | grep "inet "
并连接到返回这里的IP地址.
try 在我的应用程序中接收数据包,但我仍然看不到流量.
此外,我在MacBook的WiFi接口上安装了Wireshark和过滤器tcp.port == 7654
.虽然我确实看到了一些消息,但我不确定我看到的是我的消息本身,还是仅仅是TCP握手,因为我看到多个SYN
和[RST, ACK]
,但不清楚我是否应该真的能够看到我发送的有效载荷?
我不知道现在该怎么办.我如何才能真正验证流量是否到达我的MacBook OK?如何验证转发设置是否正确?