gpt4 book ai didi

android - 如何指定在 Android 中发送 UDP 数据包的接口(interface)(Wifi 或数据)?

转载 作者:太空狗 更新时间:2023-10-29 16:28:47 24 4
gpt4 key购买 nike

我希望能够指定和约束发送 UDP 数据报的接口(interface)。

我想在不物理禁用“不需要的”界面的情况下执行此操作。假设标准 INET 连接在所选接口(interface)上可用(实际上假设如果两个接口(interface)都处于 Activity 状态,则 INET 连接在 boti 上可用)

如果启用了 Wifi 接口(interface),大多数移动设备将通过 Wifi 发送数据(优先于数据接口(interface));但我想知道如何通过我选择的接口(interface)在语法上“强制”UDP。

已经发布了类似的问题,但没有问题准确地切中主题。此外,我希望编程的解决方案在 Android SDK 版本方面尽可能早地可用(一般或通过支持库)。

请注意“Android 如何选择 wifi 网络接口(interface)发送 udp 数据包”这个问题是老问题,而且从未得到回答。

最佳答案

cyanide's answer 有问题- 如何为所有设备(当前和 future )确定与 getName() 关联的有效 WiFi 接口(interface)值?

我提出的解决方案需要找到与 WiFi 接口(interface)关联的 IP 地址,然后获取绑定(bind)到该地址的 UDP 套接字。可以通过访问 WiFiManager 来获取 WiFi 接口(interface)的句柄:

 WifiManager wifiManager =
(WifiManager) context.getApplicationContext ()
.getSystemService (Context.WIFI_SERVICE);

.....

int localInetAddressInt = wifiManager.getDhcpInfo ().ipAddress;

ByteBuffer tmp = ByteBuffer.allocate (4);

tmp.putInt (localInetAddressInt);

InetAddress localInetAddress = InetAddress.getByAddress (tmp.array ());

DatagramSocket socket = new DatagramSocket (portNumber, localInetAddress);

然后,当通过 DatagramSocket(套接字)发送时,设备应该通过适当的接口(interface)路由数据报,即与绑定(bind) IP 地址关联的接口(interface),即 IP 地址到的 WiFi 接口(interface)被绑定(bind)。 IP 地址通常由 WiFi 接入点通过 DHCP 与 WiFi 接口(interface)相关联。

关于android - 如何指定在 Android 中发送 UDP 数据包的接口(interface)(Wifi 或数据)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44067535/

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