首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

機器身份識別:InetAddress 與 IP 位址深度解析

     編輯:Java 相關知識

為何需要機器識別?

為了分辨來自他處的機器、確保連線的是目標機器,必須有機制唯一識別網路內每台機器。早期網路只解決區域網路機器命名,但 Java 面向整個網際網路,需識別全球機器。採用 IP(網際網路位址) 概念。

IP 位址兩種形式

  1. DNS(域名服務)形式: 如 Opus.bruceeckel.com。寄送電子郵件、WWW 位址常用此格式
  2. 四點格式: 如 202.98.32.111,四組數字以點分隔

內部均表現為 32 位元二進位數字,故每組數字不超過 255。透過 java.net.InetAddress.getByName() 讓 Java 物件表達任一形式,回傳 InetAddress 物件,可構成 Socket。

註: 32 位元約 40 億組合,全球即將用盡。新 IP 編址方案採 128 位元,或許數百年不會用完。

實際應用範例:撥號上網取得臨時 IP

撥號連接 ISP 時,每次獲得臨時 IP 位址。連線期間該 IP 與網際網路上其他 IP 同等有效。若有人按你的 IP 連線,可使用你機器上的 Web/FTP 服務(前提是對方知曉你目前 IP)。但每次撥號 IP 隨機不同,如何準確掌握?

程式碼:WhoAmI.java

//: WhoAmI.java
package c15;
import java.net.*;

public class WhoAmI {
    public static void main(String[] args) throws Exception {
        if(args.length != 1) {
            System.err.println("Usage: WhoAmI MachineName");
            System.exit(1);
        }
        InetAddress a = InetAddress.getByName(args[0]);
        System.out.println(a);
    }
} ///:~

執行範例

作者機器名稱為 "Colossus"。連上 ISP 後執行:

java WhoAmI Colossus

輸出類似(每次 IP 不同):

Colossus/202.98.41.151

將此位址告訴朋友,他可立即登入你的個人 Web 伺服器:https://202.98.41.151(前提是你不斷線)。這是傳送資訊或正式上線前測試的方便手段。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved