gpt4 book ai didi

java - 如何使用android以编程方式找到网络上IP Cam的IP地址

转载 作者:行者123 更新时间:2023-12-02 02:10:58 25 4
gpt4 key购买 nike

我需要连接到路由器的网络摄像机的IP地址和端口号。您已经知道大多数网络摄像机都有管理员、密码和设备 ID。

我知道设备 ID、管理员和密码,我对 java/android 不太熟悉。如果有人分享我的教程/博客或java和xml的代码 fragment 并明确添加权限

注意:假设 Android 设备和 IP Cam 连接在同一路由器(本地网络)上

注意:我有中国制造的网络摄像机。这是产品的链接。 Product link

我知道许多应用程序可用于此目的,但我的目标是学习和做其他事情。

最佳答案

您可以 ping 所有可能的地址,以列出所有响应的地址,然后获取其主机名,使其与您的设备 ID 相匹配。'

代码示例:


import java.util.List;
import java.net.InetAddress;
import java.util.ArrayList;
import java.util.concurrent.CyclicBarrier;

public class HostFinder {
private static int ADDR_MAX = 256;

private List<InetAddress> reachableAdresses;
private String hostname;
private CyclicBarrier cb;

public HostFinder(String hostname){
this.reachableAdresses = Collection.synchronizedArrayList();
}

public void find(Handler handler, String hostname){

// Building possible adresses
InetAddress localhost = InetAdress.getByName("localhost");
String[] splitAddr = localhost.toString().split(".");
String root = splitAddr[0] + "." + splitAddr[1] + "." + splitAddr[2];

// Callback action when the treahd finishes
this.cb = new CyclicBarrier(ADDR_MAX, () -> {
for(InetAddress addr: reachableAdresses){
if(addr.getHostName().equals(hostname)){
handler.handle(add);
break;
}
}
});

// Launching a thread that will ping each address possible on the local network
for(int i = 0; i < ADDR_MAX; ++i) {
Thread t = new Thread( () -> {
InetAddress addr = InetAddress.getByName(root + "." + i);
if(addr.isReachable(5000)){
reachableAdresses.add(addr);
}
else{
try {
this.cbr.await();
} catch (Exception ex) {
System.out.println("Thread error");
}
}
});
t.start();
}
}

// Async handler to fetch the data
public interface Handler{
public void handle(InetAddress addr);
}
}

关于java - 如何使用android以编程方式找到网络上IP Cam的IP地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57327668/

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