在 Android 中为 TCP 连接指定承载 6/7

Specify bearer for TCP connection in Android 6/7

现代 Android phone 上的应用是否可以指定应该在哪个承载上建立 TCP 连接?

即我想使用 Wifi 打开到服务器的连接 使用 GPRS 到(可能不同的)服务器的连接。

我猜我需要枚举 phone 上的接口并指定连接的源地址,以及目标端口和地址。

有没有办法在Android中使用"SO_BINDTODEVICE"?

TCP 不担心通信媒介。它与 IP 和以太网层的内部机制无关。所以,我认为,TCP 不会帮助您区分 GPRS 和 Wifi。

您可以绑定到系统中可用的特定IP地址。 IP 可以是任何特定媒体中的 src。

我对 SO_BINDTODEVICE 一无所知,但从 Lollipop 开始,有专门的 Android API 可以满足您的需求。

您可以使用 ConnectivityManager to enumerate the available networks, and then obtain a SocketFactory 其套接字将仅通过所选网络进行通信。