10

以前有人问过这个问题,但没有得到满意的答复。

从我的 Android 应用程序中,我需要向通过 USB 连接的 PC 发送 HTTP 请求。通常,使用 ADB 的通信是单向的,从 PC 到 Android。

正如上述副本的答案中提到的,这已经在之前完成了:Android Usb Port Forwarding。如果我真的需要,我可以下载这个应用程序并搞砸它,但我更愿意在我自己的应用程序中实现它。

有任何想法吗?

4

5 回答 5

9

如果 Android 手机支持 USB 网络共享:

  1. 通过 USB 数据线连接手机
  2. 启用 USB 网络共享
  3. 将在 IP 范围 192.168.142.X 中创建局域网连接 [此 LAN 的 IP 也可以设为静态]

现在可以使用此设置向 PC 上运行的 Web 服务器发送 HTTP 请求。

于 2012-10-26T13:01:05.350 回答
8

它实际上不是一种方式的通信,而是发起连接的能力。

要使用标准的 android 功能做到这一点,您在概念上必须通过现有的 PC 发起的连接来隧道设备发起的连接。例如,使用现成的工具:

  1. 设置从 PC 到设备的 ADB 端口转发
  2. 在与您的 adb forward 对应的非特权端口号上在 android 设备上运行 SSH 服务器
  3. 通过ADB转发从PC上的SSH客户端连接到手机,并将手机上的端口设置回PC上的端口的SSH转发
  4. 在 PC 上运行一个服务器,监听 SSH 转发的目标端口。
  5. 让您在手机上的代码通过该 SSH 端口转发与 PC 上的服务器联系

您实际上不必使用 SSH,它只是打包了可以使用的部分。

作为另一种想法,一些支持 USB 网络共享以向 PC 提供移动网络服务的 Android 设备最终会通过 USB 电缆创建一个双向 IP 网络,您可以将其用于其他目的。但是要非常小心,不要意外地通过手机路由所有 PC 的网络流量。

于 2012-06-06T17:55:56.867 回答
1

在 USB 中,启动通信的始终是主机(在您的情况下为 PC)。因此,您需要使用一些技巧来使 Android 设备发送请求。PC 可能会定期轮询 Android(例如,每 100 毫秒),如果它有一个未决的 HTTP 请求并相应地收集它,类似于jackbot所做的。我猜这就是 Android 到 USB 端口转发所做的。

于 2012-06-06T09:27:21.950 回答
0

应该可以为此目的使用 USB 网络共享。当您在 Android 设备上为您的 PC 启动 USB 网络共享时,PC 和 Android 将在同一个本地网络中。它允许通过 HTTP 访问 PC(例如测试 http 服务器)。

于 2012-07-23T16:27:34.997 回答
-1

不幸的是,您不能通过本地套接字发送 HTTP 请求,例如 /dev/tty... 或类似的。默认情况下,如果 android 设备获取 IP 地址,将通过 DHCP 或您设置的静态 IP 完成。您需要做的是知道台式计算机的 IP。

你实际上想要完成什么?让应用程序向 localhost 发送请求,该请求将中继到 PC?

这个答案可能有助于“通过 USB 网络共享找到桌面的 ip

于 2012-06-06T17:18:27.190 回答