Tôi đang phát triển một ứng dụng Android và tôi cần sử dụng IPv6 để kết nối với máy chủ.Android và IPv6 trong Java
IPv6 được bật trên điện thoại và tôi có thể thấy địa chỉ IPv6 cục bộ của mình với ip addr
. Tôi cũng có thể thành công ping6
điện thoại của tôi từ PC và ngược lại.
Nhưng tôi cố gắng lấy địa chỉ cục bộ trên Android thông qua lệnh Java NetworkInterface.getNetworkInterfaces()
Tôi chỉ nhận được địa chỉ IPv4.
Tôi cũng đã cố gắng mở ổ cắm ứng dụng khách nhưng dòng Socket s = new Socket(MYSERVERIPV6ADDRESS, PORT);
luôn ném java.net.SocketException: Invalid argument
. Tôi chắc chắn địa chỉ là chính xác bởi vì tôi đã thử với cùng một mã trên máy tính của tôi và hoạt động hoàn hảo.
Dường như IPv6 được hệ điều hành hỗ trợ chứ không phải bởi máy ảo Java. Có cách nào để giải quyết vấn đề này không?
Cập nhật: Sử dụng 'Ổ cắm s = ổ cắm mới (MYSERVERIPV6ADDRESS +"/64% eth0 ", PORT);' ném 'java.net.SocketException: Ngoại lệ máy chủ không xác định'. – Andrea