gpt4 book ai didi

android - 从网络设备的 IP 地址列表中查找打印机 IP 地址

转载 作者:太空狗 更新时间:2023-10-29 15:04:51 32 4
gpt4 key购买 nike

目标-我需要在 wifi 上检测我的 Brother QL-720NW 标签打印机,以便从我的应用程序进行打印。

我在 SO 上经历过各种类似的问题,例如 Get the IP address of printer , How to connect a network printer over Android? , How to get IP adress of other hosts in same wifi network in android?等等

但是以上都不能完全解决我的问题。

Using this How to get IP address of the device from code? I'm able to get list of all ip addresses on my wifi network .

代码:

String myIpAdd= getIPAddress(true);
ArrayList<InetAddress> inetAddresses=getConnectedDevices(myIpAdd);

public ArrayList<InetAddress> getConnectedDevices(String YourPhoneIPAddress) {
ArrayList<InetAddress> ret = new ArrayList<InetAddress>();

LoopCurrentIP = 0;

String IPAddress = "";
String[] myIPArray = YourPhoneIPAddress.split("\\.");
InetAddress currentPingAddr;

for (int i = 0; i <= 255; i++) {
try {

// build the next IP address
currentPingAddr = InetAddress.getByName(myIPArray[0] + "." +
myIPArray[1] + "." +
myIPArray[2] + "." +
Integer.toString(LoopCurrentIP));

// 50ms Timeout for the "ping"
if (currentPingAddr.isReachable(50)) {

ret.add(currentPingAddr);
}
} catch (UnknownHostException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}

LoopCurrentIP++;
}
return ret;
}

/**
* Get IP address from first non-localhost interface
* @param ipv4 true=return ipv4, false=return ipv6
* @return address or empty string
*/
public static String getIPAddress(boolean useIPv4) {
try {
List<NetworkInterface> interfaces = Collections.list(NetworkInterface.getNetworkInterfaces());
for (NetworkInterface intf : interfaces) {
List<InetAddress> addrs = Collections.list(intf.getInetAddresses());
for (InetAddress addr : addrs) {
if (!addr.isLoopbackAddress()) {
String sAddr = addr.getHostAddress().toUpperCase();
boolean isIPv4 = InetAddressUtils.isIPv4Address(sAddr);
if (useIPv4) {
if (isIPv4)
return sAddr;
} else {
if (!isIPv4) {
int delim = sAddr.indexOf('%'); // drop ip6 port suffix
return delim<0 ? sAddr : sAddr.substring(0, delim);
}
}
}
}
}
} catch (Exception ex) {
ex.printStackTrace();
} // for now eat exceptions
return "";
}

如何从 Ip 地址列表中检测到我的打印机的 IP 地址?

请帮忙。

最佳答案

如果您想维护一个静态 IP 地址,您可能需要在打印机中进行设置。如果您使用的是 DHCP,则将其关闭并重新打开后有可能会为其分配一个新的 IP。一旦它是静态的,您就可以在应用程序中对其进行编码或将其放入设置中。这样您就永远不需要搜索 IP 地址。

关于android - 从网络设备的 IP 地址列表中查找打印机 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23009854/

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