目錄
網域名稱解析
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...