在socket中運用域名

客戶端中直接運用IP地址會有很大的弊病,一旦IP地址變更(IP地址會常常變化),客戶端軟件就會呈現(xiàn)毛病。
而運用域名會便利許多,注冊后的域名只需每年續(xù)費就永遠屬于本人的,改換IP地址時修正域名解析即可,不會影響軟件的正常運用。
關(guān)于域名注冊、域名解析、host 文件、DNS 效勞器等本節(jié)并未具體解說,請讀者自行腦補。本節(jié)重點解說若何運用域名。

為杏花嶺等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及杏花嶺網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站制作、成都網(wǎng)站建設(shè)、杏花嶺網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!

經(jīng)過域名獲取IP地址

域名僅僅是IP地址的一個助記符,目標是便利記憶,經(jīng)過域名并不克不及找到目的盤算機,通訊之前必需要將域名轉(zhuǎn)換成IP地址。
gethostbyname() 函數(shù)可以完成這種轉(zhuǎn)換,它的原型為:

			struct hostent *gethostbyname(const char *hostname);

hostname 為主機名,也就是域名。運用該函數(shù)時,只需傳遞域名字符串,就會前往域名對應(yīng)的IP地址。前往的地址信息會裝入 hostent 構(gòu)造體,該構(gòu)造體的界說如下:

			struct hostent{ char *h_name; //official name char **h_aliases; //alias list int h_addrtype; //host address type int h_length; //address lenght char **h_addr_list; //address list }

從該構(gòu)造體可以看出,不只前往IP地址,還會附帶其他信息,列位讀者只需存眷最初一個成員 h_addr_list。下面是對各成員的闡明:

  • h_name:官方域名(Official domain name)。官方域名代表某一主頁,但實踐上一些有名公司的域名并未用官方域名注冊。

  • h_aliases:別號,可以經(jīng)過多個域名拜訪統(tǒng)一主機。統(tǒng)一IP地址可以綁定多個域名,因而除了以后域名還可以指定其他域名。

  • h_addrtype:gethostbyname() 不只支撐 IPv4,還支撐 IPv6,可以經(jīng)過此成員獲取IP地址的地址族(地址類型)信息,IPv4 對應(yīng) AF_INET,IPv6 對應(yīng) AF_INET6。

  • h_length:保管IP地址長度。IPv4 的長度為4個字節(jié),IPv6 的長度為16個字節(jié)。

  • h_addr_list:這是最主要的成員。經(jīng)過該成員以整數(shù)方式保管域名對應(yīng)的IP地址。關(guān)于用戶較多的效勞器,能夠會分派多個IP地址給統(tǒng)一域名,應(yīng)用多個效勞器停止平衡負載。


hostent 構(gòu)造體變量的構(gòu)成如下圖所示:
在socket中運用域名
下面的代碼次要演示 gethostbyname() 的使用,并闡明 hostent 構(gòu)造體的特征:

			#include <stdio.h> #include <stdlib.h> #include <WinSock2.h> #pragma comment(lib, "ws2_32.lib") int main(){ WSADATA wsaData; WSAStartup( MAKEWORD(2, 2), &wsaData); struct hostent *host = gethostbyname("www.baidu.com"); if(!host){ puts("Get IP address error!"); system("pause"); exit(0); } //別號 for(int i=0; host->h_aliases[i]; i++){ printf("Aliases %d: %s\n", i+1, host->h_aliases[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++){ printf("IP addr %d: %s\n", i+1, inet_ntoa( *(struct in_addr*)host->h_addr_list[i] ) ); } system("pause"); return 0; }

運轉(zhuǎn)后果:
Aliases 1: www.baidu.com
Address type: AF_INET
IP addr 1: 61.135.169.121
IP addr 2: 61.135.169.125

當前名稱:在socket中運用域名
網(wǎng)頁路徑:http://www.muchs.cn/article44/phophe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名App設(shè)計、小程序開發(fā)、建站公司、品牌網(wǎng)站建設(shè)移動網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化