Tôi muốn lấy địa chỉ IP của Trình mô phỏng Android hiện đang chạy thông qua mã. Làm thế nào nó có thể đạt được?
Tôi muốn lấy địa chỉ IP của Trình mô phỏng Android hiện đang chạy thông qua mã. Làm thế nào nó có thể đạt được?
Câu trả lời:
Chỉ cần làm rõ: từ bên trong ứng dụng của bạn, bạn có thể chỉ cần gọi trình giả lập là 'localhost' hoặc 127.0.0.1.
Lưu lượng truy cập web được định tuyến thông qua máy phát triển của bạn, vì vậy IP bên ngoài của trình giả lập là bất kỳ IP nào đã được nhà cung cấp của bạn gán cho máy đó. Máy phát triển luôn có thể được kết nối từ thiết bị của bạn tại 10.0.2.2.
Vì bạn chỉ hỏi về IP của trình giả lập , bạn đang cố gắng làm gì?
10.0.2.1
, không phải trực tiếp. Vì vậy, sẽ có một kết nối bổ sung diễn ra giữa bộ định tuyến này 10.0.2.1
với máy chủ / nhà phát triển 127.0.0.1/10.0.2.2
. Điều tôi thực sự thường thay đổi số cổng tôi muốn kết nối.
Nếu bạn thực sự muốn IP được gán cho trình mô phỏng của mình:
adb shell
ifconfig eth0
Điều này sẽ cung cấp cho bạn một cái gì đó như:
eth0: ip 10.0.2.15 mask 255.255.255.0 flags [up broadcast running multicast]
adb shell
: ifconfig: eth0: No such device
bất kỳ ý tưởng tại sao?
wlan0
Như thế này:
public String getLocalIpAddress() {
try {
for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
NetworkInterface intf = en.nextElement();
for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
InetAddress inetAddress = enumIpAddr.nextElement();
if (!inetAddress.isLoopbackAddress()) {
return inetAddress.getHostAddress().toString();
}
}
}
} catch (SocketException ex) {
Log.e(LOG_TAG, ex.toString());
}
return null;
}
Kiểm tra tài liệu để biết thêm thông tin: NetworkInterface .
Sử dụng phương pháp này, bạn sẽ nhận được địa chỉ ip chính xác 100% cho trình giả lập Android của mình
Để lấy địa chỉ ip của trình giả lập yoor
Vào adb shell và gõ lệnh này
adb shell
ifconfig eth0
Sau khi chạy lệnh này, tôi nhận được
IP: 10.0.2.15
Mặt nạ: 255.255.255.0
Cái nào phù hợp với tôi. Tôi cũng đang làm việc cho một ứng dụng mạng.
Nếu bạn cần tham chiếu đến máy chủ cục bộ của máy tính chủ của mình, chẳng hạn như khi bạn muốn máy khách giả lập liên hệ với máy chủ đang chạy trên cùng máy chủ, hãy sử dụng bí danh 10.0.2.2 để tham chiếu đến giao diện lặp lại của máy tính chủ. Từ quan điểm của trình giả lập, localhost (127.0.0.1) đề cập đến giao diện loopback của riêng nó. Chi tiết thêm: http://developer.android.com/guide/faq/commontasks.html#localhostalias
public String getLocalIpAddress() {
try {
for (Enumeration < NetworkInterface > en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
NetworkInterface intf = en.nextElement();
for (Enumeration < InetAddress > enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
InetAddress inetAddress = enumIpAddr.nextElement();
if (!inetAddress.isLoopbackAddress()) {
return inetAddress.getHostAddress().toString();
}
}
}
} catch (SocketException ex) {
Log.e(LOG_TAG, ex.toString());
}
return null;
}