Linux下socket網域名稱解析的實現

2021-10-06 21:47:57 字數 1600 閱讀 1569

目錄

網域名稱解析

linux下socket網域名稱解析 

網域名稱解析的具體函式

gethostbyname函式

getaddrinfo函式

getnameinfo函式

程式設計例項

執行結果

ping baidu.com
linux作業系統: 

windows作業系統:

在我們寫網路socket的客戶端的時候,我們一般直接使用的是伺服器端的ip位址,這相對來說具有一定的侷限性,我們可以通過socket的網域名稱解析函式來實現網域名稱解析。

1、h_name:官方網域名稱(official domain name)。官方網域名稱代表某一主頁,但實際上一些著名公司的網域名稱並未用官方網域名稱註冊。\

2、h_aliases:別名,可以通過多個網域名稱訪問同一主機。同一ip位址可以繫結多個網域名稱,因此除了當前網域名稱還可以指定其他網域名稱。

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

4、h_length:儲存ip位址長度。ipv4 的長度為4個位元組,ipv6 的長度為16個位元組。

5、h_addr_list:這是最重要的成員。通過該成員以整數形式儲存網域名稱對應的ip位址。對於使用者較多的伺服器,可能會分配多個ip位址給同一網域名稱,利用多個伺服器進行均衡負載。

注意:

由於gethostbyname, gethostbyaddr是不可重入函式;已經被getaddrinfo, getnameinfo替代。

#include #include #include int getaddrinfo(const char *node, const char *service,const struct addrinfo *hints,

struct addrinfo **res);

addrinfo的結構體:

linux下socket程式設計

一 什麼是socket socket可以看成是使用者程序與核心網路協議棧的程式設計介面。socket不僅可以用於本機的程序間通訊,還可以用於網路上不同主機的程序間通訊。socket api是一層抽象的網路程式設計介面,適用於各種底層網路協議,如ipv4 ipv6。struct sockaddr in...

linux下socket程式設計

作為乙個嵌入式開發者,在實際的研發專案中,常常需要編寫socket網路程式設計介面,提供給軟體開發人員。下面將提供乙個常用的 模板 客戶端的功能可以用微控制器多功能除錯助手進行驗證 include include include include include include include def...

linux下socket程式設計

簡單的linux下socket程式設計,分別基於tcp和udp協議實現的簡單程式 linux下socket程式設計可以概括為以下幾個函式的運用 流程 將套接字繫結到伺服器的網路位址上 if bind server sockfd,struct sockaddr my addr,sizeof struc...