JAVA 和python 多網卡情況下獲取正確的IP地址

要獲取內網地址,可以嘗試連接到10.255.255.255:1。如果連接成功,獲取本地套接字的地址信息就是當前的內網IP。

python實現:

import socket

def extract_ip():
    st = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    try:
        st.connect(('10.255.255.255', 1))
        IP = st.getsockname()[0]
    except Exception:
        IP = '127.0.0.1'
    finally:
        st.close()
    return IP

Java:


import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;

/**
 * 網絡工具
 * @author jqpeng
 */
public class NetUtils {

    public static void main(String[] args) throws UnknownHostException {
        InetAddress localHost = InetAddress.getLocalHost();
        System.out.println(localHost.getHostAddress());

        System.out.println("----------------下面纔是正確的獲取方式----------------");
        localHost = getLocalHostExactAddress();
        System.out.println(localHost.getHostAddress());
        // System.out.println(localHost.getHostName());
    }


    public static InetAddress getLocalHostExactAddress() {
        try {
            DatagramSocket socket = new DatagramSocket();
            socket.connect(InetAddress.getByName("10.255.255.255"), 1);
            InetAddress address = socket.getLocalAddress();
            socket.close();
            return address;
        } catch (UnknownHostException | SocketException e) {
            try {
                return InetAddress.getLocalHost();
            } catch (UnknownHostException ex) {
                throw new RuntimeException(ex);
            }
        }
    }

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章