使用 Telnet 连接到 Android 上的 Socket 服务器
Posted
技术标签:
【中文标题】使用 Telnet 连接到 Android 上的 Socket 服务器【英文标题】:Connecting to Socket server on Android using Telnet 【发布时间】:2019-05-16 06:28:34 【问题描述】:我在模拟器中的 android 应用程序上运行了一个 ServerSocket。我想从我的主机(MacBook)向它发送消息。
完全按照 How to connect to an Android server socket in the emulator 的说明,我的步骤是:
在 Android 应用中启动一个新线程。在此线程中,使用 ServerSocket 监听 8080 端口和本地的传入请求 IP 地址。
InetAddress addr = InetAddress.getByName(< ipaddress >);
serverSocket = new ServerSocket(8080, 0, addr);
clientSocket = serverSocket.accept();
使用 ADB 将网络流量从端口 5050 的主机重定向到 8080。
telnet localhost 5554
redir add tcp:5050:8080
使用 Telnet 向主机的 5050 端口发送消息。该消息预计将重定向到模拟器上的 8080 端口。相反,我收到一条连接关闭消息。
telnet -d localhost 5050
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Connection closed by foreign host.
知道为什么连接会立即关闭吗?如何将消息发送到服务器?
【问题讨论】:
我遵循相同的说明并遇到了相同的问题。看起来在 2012 年发布到 2018 年这个问题之间的某个时间,模拟器停止允许传入连接。缺少描述性错误消息或更新 documentation 使其看起来像是一个错误或我们做错了什么。 This 可能会有所帮助。我无法让它满足我的需求(用于不支持 x86 的项目的 ARM 仿真器)并且 telnet 测试不起作用,但我能够通过 ping 进入 x86_64 仿真器。这是我在放弃之前所获得的,因为这在物理设备上不是问题。 【参考方案1】:无法从127.0.0.1
上的主机访问模拟器,但它是10.0.2.2
...否则您将连接到本地环回,而不是虚拟接口。
【讨论】:
以上是关于使用 Telnet 连接到 Android 上的 Socket 服务器的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 netcat/socat/telnet 手动连接到 websocket?