2011-12-15 90 views
4

我的問題是下面的IP地址:爪哇 - 按名稱獲取DNS

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

所以我認爲然後它會這樣工作: 服務器啓動時,獲取其IP。然後訪問一些DNS(?)服務以將此IP提供。 那麼客戶端就像getByName一樣,看看建立連接的服務器的IP是什麼。
會是這樣嗎?如果是這樣, 這是如何在Java服務器代碼,以及我可以使用什麼DNS服務(以及如何配置它?)

+0

這是家用網絡工作?如果工作,這應該已經由您的網絡團隊管理。在服務器端沒有太多的變化(你正在監聽 - 只有在不同網絡上有多個接口時纔會出現複雜情況)。如果它在家,請檢查你的路由器設置,看看它是否可以支持DNS。 – Nim 2011-12-15 11:21:07

回答

3

如果您的Java應用程序運行在互聯網上的機器上,它已經有一個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或類似服務。在這種情況下,它會變得有點複雜,因爲您必須通知動態DNS IP變化。有些路由器內置此功能,有些則不具備。在這種情況下,您必須確保通知dynamicDNS。在互聯網上有很多可用的腳本(通常用於Linux/UNIX),並且有一些用於Windows的免費軟件工具。我從來沒有在Windows上做過這件事,但是我在Linux上做過,而且效果很好。

+0

謝謝你的回答。 dyndns是我正在嘗試使用,我正在嘗試配置它現在 – kri8or 2011-12-15 11:36:44

+0

不客氣,很高興提供幫助。 – DejanLekic 2011-12-15 11:38:42

-1

通常,客戶端應該通過DNS連接到服務器,而不是通過IP。只需將您的客戶端配置爲連接到example.com,並將DNS名稱example.com配置爲指向您的IP地址即可。