gpt4 book ai didi

Android - 在网络中查找服务器

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:21:28 28 4
gpt4 key购买 nike

我目前正在编写一个客户端-服务器应用程序,我问自己是否有更好的方法在本地网络中查找服务器然后遍历所有可用的 IP 地址并查看是否提供了正确的答案?

最佳答案

您可能想查看 UDP 广播,您的服务器会在其中宣布自己,而手机会监听广播。


There is an example来自 Boxee 远程项目,引用如下。

获取广播地址

您需要访问 wifi 管理器以获取 DHCP 信息并从中构建广播地址:

InetAddress getBroadcastAddress() throws IOException {
WifiManager wifi = mContext.getSystemService(Context.WIFI_SERVICE);
DhcpInfo dhcp = wifi.getDhcpInfo();
// handle null somehow

int broadcast = (dhcp.ipAddress & dhcp.netmask) | ~dhcp.netmask;
byte[] quads = new byte[4];
for (int k = 0; k < 4; k++)
quads[k] = (byte) ((broadcast >> k * 8) & 0xFF);
return InetAddress.getByAddress(quads);
}

发送和接收UDP广播包

构建广播地址后,一切正常。以下代码将通过广播发送字符串数据,然后等待响应:

DatagramSocket socket = new DatagramSocket(PORT);
socket.setBroadcast(true);
DatagramPacket packet = new DatagramPacket(data.getBytes(), data.length(),
getBroadcastAddress(), DISCOVERY_PORT);
socket.send(packet);

byte[] buf = new byte[1024];
DatagramPacket packet = new DatagramPacket(buf, buf.length);
socket.receive(packet);

您还可以查看 Bonjour/zeroconf,并且有一个 Java implementation这应该适用于 Android。

关于Android - 在网络中查找服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4464207/

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