在socket中使用網域名稱

2021-10-20 05:31:03 字數 1200 閱讀 4122

客戶端中直接使用ip位址會有很大的弊端,一旦ip位址變化(ip位址會經常變動),客戶端軟體就會出現錯誤。

而使用網域名稱會方便很多,註冊後的網域名稱只要每年續費就永遠屬於自己的,更換ip位址時修改網域名稱解析即可,不會影響軟體的正常使用。

關於網域名稱註冊、網域名稱解析、host 檔案、dns 伺服器等本節並未詳細講解,請讀者自行腦補。本節重點講解如何使用網域名稱。

網域名稱僅僅是ip位址的乙個助記符,目的是方便記憶,通過網域名稱並不能找到目標計算機,通訊之前必須要將網域名稱轉換成ip位址。

gethostbyname() 函式可以完成這種轉換,它的原型為:

struct hostent *gethostbyname(const char *hostname);
struct hostent
h_addrtype:gethostbyname() 不僅支援 ipv4,還支援 ipv6,可以通過此成員獲取ip位址的位址族(位址型別)資訊,ipv4 對應 af_inet,ipv6 對應 af_inet6。

hostent 結構體變數的組成如下圖所示:

下面的**主要演示 gethostbyname() 的應用,並說明 hostent 結構體的特性:

#include #include #include #pragma comment(lib, "ws2_32.lib")

int main()

//別名

for(int i=0; host->h_aliases[i]; i++)

//位址型別

printf("address type: %s\n", (host->h_addrtype==af_inet) ? "af_inet": "af_inet6");

//ip位址

for(int i=0; host->h_addr_list[i]; i++)

system("pause");

return 0;

}

執行結果:

在AD中使用多網域名稱DNS Suffix

現在我們使用windows server 2003的ad環境,我想實現如下功能 1 如何更改設定實現dns suffix search list中顯示更多的資訊 網域名稱 2 設定更多的網域名稱在dns suffix search list中起什麼作用?c documents and setting...

IOS 使用網域名稱進行Socket連線

cocos2d開發網 cocos2dev.com,謝謝!專案中用到了socket連線,由於我使用的boost,而boost的建立連線是只能傳ip位址的,而我伺服器位址是網域名稱,所以就要將網域名稱轉到ip。看了下 其實也挺簡單的。server address server domain hosten...

如何在activity中使用socket

1.做了乙個專案,需要在activity中實時採集螢幕滑動的坐標,並將坐標傳送給服務端,由於socket不能在activity中直接使用,採用如下辦法,將socket作為內部類 public class socketmotion public void setipandport string ip,...