Làm cách nào để xác định giao diện mạng nào được kết nối với internet bằng Java? Ví dụ: tôi chạyCách xác định giao diện mạng Internet trong Java
InetAddress.getLocalHost().getHostAddress();
và trong Eclipse này trả về chính xác những gì tôi định, 192.168.1.105. Tuy nhiên, nếu tôi gói này vào một tệp jar và chạy chương trình, mã trả về 169.254.234.50. Nhìn vào đây, tôi thấy đây là địa chỉ IP của giao diện Bộ điều hợp Ethernet Ảo Ethernet trên máy của tôi.
Có cách nào để xác định giao diện được kết nối với internet, nhưng đồng thời duy trì tính di động cho mã của tôi không?
So sánh giao diện
Interface [Net4]
display name : Intel(R) Centrino(R) Ultimate-N 6300 AGN
MTU : 1500
loopback : false
point to point: false
up : true
virtual : false
multicast : true
HW address : 00 24 D7 2C 5F 70
INET address (IPv4): 192.168.1.105
host name : MyComputer
canonical host name : MyComputer
loopback : false
site local : true
any local : false
link local : false
multicast : false
reachable : true
Interface [eth5]
display name : VMware Virtual Ethernet Adapter for VMnet1
MTU : 1500
loopback : false
point to point: false
up : true
virtual : false
multicast : true
HW address : 00 50 56 C0 00 01
INET address (IPv4): 169.254.234.50
host name : MyComputer
canonical host name : MyComputer
loopback : false
site local : false
any local : false
link local : true
multicast : false
reachable : true
Có một giao diện VMware thứ ba với trang web địa phương = true và liên kết local = false, do đó, các trường đó sẽ xuất hiện ' t bất kỳ sự giúp đỡ nào.
bạn đang chạy JAR bên trong một máy ảo VM là môi trường riêng của mình, với giao diện mạng riêng của mình, đó là? cái Java trả về. – blackcompe
N o, đây là trên một máy tính Windows 7. Tôi đã cài đặt VMWare tuy nhiên, và tôi tin rằng đây là giao diện nó sử dụng để giao tiếp với máy ảo. Tôi không chắc chắn tại sao Java chọn giao diện này làm giao diện mặc định. Hành vi này giống hệt trên máy tính bạn cùng phòng của tôi (Windows 7, VMWare được cài đặt) –
@CavynVonDeylen Vui lòng xem câu trả lời cập nhật của tôi. Mã tôi đã đăng chỉ in ra giao diện mạng thực của tôi, trong khi mạng của Virtual Box đã được cài đặt và kích hoạt. –