簡體   English   中英

Java-按名稱獲取IP地址DNS(?)

[英]Java - Get IP address by name DNS (?)

我的問題如下:

我有一個Java程序,一個服務器,正在等待來自客戶端的TCP連接。 問題是,服務器用於等待連接的IP地址會隨着時間而變化...因此,我希望客戶端能夠以某種方式獲得該地址。 我想我需要配置一些DNS服務器,但我不知道具體如何。 如果有免費這樣的服務,等等。

因此,我認為這樣就可以了:服務器啟動時獲取其IP。 然后訪問一些DNS(?)服務以使該IP可用。 因此,客戶端進行類似於getByName的操作,然后查看建立連接的服務器IP是什么。
會是這樣嗎? 如果是這樣,這在Java服務器代碼上如何?我可以使用哪些DNS服務(以及如何對其進行配置?)

如果您的Java應用程序在Internet上的計算機上運行,​​則它已經有可用的DNS服務,並且它已經具有局域網中其他計算機可見的至少一個IP。 使用與我在下面編寫的代碼類似的Java代碼來獲取IP地址。

import java.net.*;
import java.io.*;

public class Ip {
  public static void main ( String[] args ) throws IOException {
    String hostname = args[0];

    try {
      InetAddress ipaddress = InetAddress.getByName(hostname);
      System.out.println("IP address: " + ipaddress.getHostAddress());
    } catch ( UnknownHostException e ) {
      System.out.println("Could not find IP address for: " + hostname);
    }
  }
}

PS。 如果運行Java服務器應用程序的計算機的IP正在更改(它正在家用計算機上運行,​​並且ISP分配了動態IP),請使用免費服務,例如http://www.dyndns.com或類似服務。 在這種情況下,它變得有點復雜,因為您必須將IP更改通知動態DNS。 有些路由器內置了此功能,有些則沒有。 在這種情況下,您必須確保已通知dynamicDNS。 Internet上有許多腳本可以幫您實現(通常是Linux / UNIX),還有一些Windows的免費軟件工具。 我從來沒有在Windows上做到這一點,但是我在Linux上做到了,而且效果很好。

通常,客戶端應通過DNS而非IP連接到服務器。 只需將您的客戶端配置為連接到example.com,然后將DNS名稱example.com配置為指向您的IP地址。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM