2011-08-16 58 views
1

我正在通過WLAN使用BSD套接字。我注意到我的服務器計算機的IP地址偶爾會在連接到它時發生更改。問題是我把我的代碼中的IP地址作爲字符串輸入。所以無論什麼時候改變,我都必須進入代碼並在那裏改變它。我該如何更改代碼,以便它可以使用當時的IP?這是在服務器代碼如何使用BSD套接字查找IP地址?

if ((status = getaddrinfo("192.168.2.2", port, &hints, &servinfo)) != 0) 

和客戶端是相同的。我試圖在雙方的地址NULL,但客戶端不會連接,只是給我一個「連接被拒絕」的錯誤。

感謝您的任何幫助。

回答

2

使用可以在主機文件或DNS中查找的域名,而不是IP地址。

0

命令行參數如何?

int main(inr argc, char* argv[]) { 
    const char* addr = "myfancyhost.domain.com"; /* default address */ 
    if (argc > 1) { 
     addr = argv[1]; /* explicit address */ 
    } 
    if ((status = getaddrinfo(addr, ... 
+0

嗯,我不想每次運行程序時都檢查IP地址。我只是想讓它自己獲得IP。 – Sterling

+0

我想你是在尋找DNS。 –

0

給您的服務器的名稱,並使用gethostbyname找到其地址(並且,通常把服務器名稱到一個配置文件,而不是硬編碼,如果你可以」雖然硬編碼默認t找到配置文件不會傷害)。

+0

這可能是一個愚蠢的問題,但我該如何「給我的服務器一個名字?」 – Sterling

+0

@Sterling:通常通過爲它添加一個入口到你的DNS(但這更像是一個serverfault的事情......) –