Java網絡編程之InetAddress

package test;

import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.util.Enumeration;

public class SpemCheck {

    public static void main(String[] args) {
        isSpammer("180.97.33.107");
    }

    public static void hostAnalysyze() {
        try {
            //域名解析
            InetAddress address = InetAddress.getByName("180.97.33.107");
            System.out.println(address.getHostName());
            InetAddress[] addresses = InetAddress.getAllByName("www.baidu.com");
            for(InetAddress a:addresses){
                System.out.println(a);
            }
            System.out.println(address.getCanonicalHostName());
            System.out.println(InetAddress.getLocalHost().getCanonicalHostName());//獲取本地主機名
            System.out.println(InetAddress.getLocalHost().getHostAddress());//獲取本地IP
            isIPv4Orv6(address);
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
    }

    /**
     * 判斷IP是IP v4還是IP v6
     * @param address
     */
    public static void isIPv4Orv6(InetAddress address){
        byte[] b = address.getAddress();
        if(b.length==4){
            System.out.println(address + " is IP v4");
        }else if(b.length==6){
            System.out.println(address + " is IP v6");
        }
    }

    /**
     * 列出本地主機所有的網絡接口
     */
    public static void interfaceList(){
        try {
            Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
            while(interfaces.hasMoreElements()){
                NetworkInterface ni = interfaces.nextElement();
                System.out.println(ni);
            }
        } catch (SocketException e) {
            e.printStackTrace();
        }
    }

    //向sbl.spamhaus.org詢問給定的地址是否爲垃圾郵件發送者
    public static boolean isSpammer(String host){
        try {
            InetAddress address = InetAddress.getByName(host);
            byte[] quad = address.getAddress();
            String query = "sbl.spamhaus.org";
            for (byte b:quad) {
                int unsigned = b<0 ? b+256 :b;
                query = unsigned + "." + query;
            }
            InetAddress.getByName(query);
            return true;
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
        return false;
    }

}
發佈了55 篇原創文章 · 獲贊 15 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章