網路最基本精神:讓兩台機器連線並相互「交談」。一旦雙方發現彼此,即可展開雙向對話。但如何「發現」?如遊樂園般:一台機器必須留在原地偵聽,另一台到處「找人」。
兩者差異僅在客戶端嘗試連接伺服器時明顯。一旦連通,變成雙向通訊,誰扮演伺服器/客戶端便不那麼重要。
連線建立後,無論伺服器端或客戶端,連線只是魔術般變成 IO 資料流物件。此後可像讀寫普通檔案那樣處理連線——這正是 Java 網路程式設計最方便之處。
多種原因可能導致無客戶端、伺服器、網路測試環境。IP 設計者建立特殊位址 localhost 滿足非網路測試需求。Java 中產生此位址最常用做法:
InetAddress addr = InetAddress.getByName(null);
傳遞 null 給 getByName() 預設使用 localhost。用 InetAddress 索引特定機器,進一步操作前必須取得此物件。不可操縱其內容(但可列印)。建立 InetAddress 唯一途徑是該類的 static 成員方法:getByName()(最常用)、getAllByName() 或 getLocalHost()。
InetAddress.getByName("localhost")InetAddress.getByName("127.0.0.1")(四點格式保留 IP)InetAddress.getByName(null)(預設 localhost)三種方法結果相同。