gpt4 book ai didi

java - Android 扫描本地子网

转载 作者:太空狗 更新时间:2023-10-29 12:57:11 24 4
gpt4 key购买 nike

我目前正在编写一个小型测试 Android 应用程序,并且在模拟器方面遇到了一个小(大)问题。

为运行我的服务器软件的计算机扫描本地子网的代码没有返回任何内容!这段代码在桌面部分运行完美,所以我知道我的模拟器内部有问题。

我必须先对 IP 扫描进行硬编码,因为我无法确定模拟器内的 IP 地址,所以我知道我至少在扫描正确的范围。

总结:如何从本地子网上的模拟器内部通过套接字连接到服务器?

谢谢大家!

这是请求的代码:

public static ArrayList<String> serviceScanner() {
ArrayList<String> servers = new ArrayList<String>();

// Get the IP of the local machine
String iIPv4 = "";
String test = "";


//getLocalIpAddress();
//System.out.println(test);

try {
// Get localhost
InetAddress addr = InetAddress.getLocalHost();

// Get IP Address
byte[] ipAddr = addr.getAddress();

iIPv4 = addr.toString();
iIPv4 = iIPv4.substring(iIPv4.indexOf("/") + 1);
iIPv4 = "10.0.2.1";
} catch (UnknownHostException e) {
// Exception output
}
// IP stuff.
String IPv4Start = "", IPv4End = "";
iIPv4 = iIPv4.substring(0, iIPv4.lastIndexOf("."));
iIPv4 += ".";
IPv4Start = iIPv4 + "1";
IPv4End = iIPv4 + "254";


PrintWriter out = null;
BufferedReader in = null;

// Loop to scan each address on the local subnet
for (int i = 1; i < 255; i++) {

try {
System.out.println(iIPv4+i);
Socket mySocket = new Socket();
SocketAddress address = new InetSocketAddress(iIPv4 + i, port);

mySocket.connect(address, 5);

out = new PrintWriter(mySocket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(
mySocket.getInputStream()));
out.println("Scanning!");
String fromServer;
while ((fromServer = in.readLine()) != null) {
System.out.println("Server: " + fromServer);
if (fromServer.equals("Server here!")) {
servers.add(iIPv4 + i);
mySocket.close();
break;
}
}
mySocket.close();
out.close();
in.close();

} catch (UnknownHostException e) {
} catch (IOException e) {
}
}
return servers;
}

最佳答案

模拟器与您的计算机不在同一子网中。它在自己的虚拟子网上,通过自己的 NAT 路由器连接到计算机。这里有解释:http://developer.android.com/guide/developing/devices/emulator.html#emulatornetworking

但是,模拟器应该能够通过其路由器连接到 Internet 上任何位置的任何套接字。您尝试连接的地址是什么?模拟器不会路由 10.0.0.0 私有(private)地址,因为它自己使用它们。不确定 168.192.0.0。你能发布失败的代码吗?

关于java - Android 扫描本地子网,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5106315/

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