gpt4 book ai didi

Android 模拟器从其他主机访问 redir 端口

转载 作者:太空狗 更新时间:2023-10-29 15:57:45 29 4
gpt4 key购买 nike

有一个在 android 应用程序中运行的服务器套接字,我使用模拟器对其进行调试。使用仿真器控制台和“redir add tcp:8888:8888”,我可以使该服务可供在我的开发机器上运行的程序使用(如 localhost:8888)。

然而,redir 端口在任何其他网络接口(interface)上都不可用,这意味着我无法通过本地开发机器上的 host-ip 或网络上的辅助机器访问它。任何人都知道是否有可能使模拟器绑定(bind)到所有网络接口(interface),或者有一些其他技巧可以使网络上的其他主机连接到模拟器?

谢谢

最佳答案

我发现 OP 关于使用 rinetd 的评论/建议比 iptables 容易得多。

rinetd 可以拦截一个接口(interface)上的连接并将它们转发到不同的 IP;因此,为了解决主机以外的计算机无法访问模拟器的问题,您拦截到主机的传入连接并将它们转发到 127.0.0.1

方法如下:

首先,安装 rinetd ( http://www.boutell.com/rinetd/ )

  • Linux:从上面的链接下载,或者在 Ubuntu 的终端中输入“sudo apt-get install rinetd”。该命令在其他 Linux 发行版中可能有所不同...
  • Windows:从上面的链接下载(但它只说 95/98/NT..)

接下来,在模拟器中设置端口重定向:

  • 开始你的AVD
  • 在终端中,输入“telnet localhost 5554”(或您的 avd 的任何端口)
  • 一旦通过 telnet 连接,输入“redir add <protocol>:<host port>:<emu port>”(例如,“redir add tcp:5000:7000”将发送到主机上的端口 5000 的 tcp 数据转发到模拟器中的端口 7000)

配置rinetd:

  • 编辑文件/etc/rinetd.conf并添加行“<host ip> <host port> 127.0.0.1 <localhost port>”。所以如果你的主机IP地址是123.45.67.89,你想使用5000端口,然后转发到127.0.0.1:5000,"123.45.67.89 5000 127.0.0.1 5000"

我不确定安装后 rinetd 是否自动启动..运行它:

  • "/usr/sbin/rinetd "

修改配置文件后重新初始化rinetd:

  • "cat /var/run/rinetd.pid "显示rinetd的pid
  • "sudo kill -1 <pid> "重新初始化它(例如,"sudo kill -1 3225 ")

关于Android 模拟器从其他主机访问 redir 端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4033046/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com