【Socket网络编程】3.字节序转换函数htons、htonl ,地址转换函数inet_ntoa、inet_ntop、inet_pton、inet_addr
字節序轉換函數htons、htonl
地址轉換函數inet_ntoa、inet_ntop、inet_pton、inet_addr
1.字節序轉換函數
#include <arpa/inet.h> // 將 32位主機字節序數據轉換成網絡字節序數據 //(h:host, n:net,l:long) uint32_t htonl(uint32_t hostint32); // 將 16 位主機字節序數據轉換成網絡字節序數據 uint16_t htons(uint16_t hostint16); // 將 32 位網絡字節序數據轉換成主機字節序數據 uint32_t ntohl(uint32_t netint32); // 將 16 位網絡字節序數據轉換成主機字節序數據 uint16_t ntohs(uint16_t netint16);htons是將整型變量從主機字節順序轉變成網絡字節順序, 就是整數在地址空間存儲方式變為高位字節存放在內存的低地址處。
網絡字節順序是TCP/IP中規定好的一種數據表示格式,它與具體的CPU類型、操作系統等無關,從而可以保證數據在不同主機之間傳輸時能夠被正確解釋,網絡字節順序采用big-endian排序方式。
htons的功能:將一個無符號短整型的主機數值轉換為網絡字節順序,即大尾順序(big-endian)
htonl,其實是host to network, l 的意思是返回類型是long. 將主機數轉換成無符號長整型的網絡字節順序。本函數將一個32位數從主機字節順序轉換成網絡字節順序。
2.地址轉換函數
【inet_ntoa()】是編程語言,功能是將網絡地址轉換成“.”點隔的字符串格式。
函數聲明:char *inet_ntoa(struct in_addr in);
將一個32位網絡字節序的二進制IP地址轉換成相應的點分十進制的IP地址(返回點分十進制的字符串在靜態內存中的指針)。
【點分十進制】(Dotted Decimal Notation)全稱為點分(點式)十進制表示法,是IPv4的IP地址標識方法。IPv4中用四個字節表示一個IP地址,每個字節按照十進制表示為0~255。
點分十進制就是用4個從0~255的數字,來表示一個IP地址。如192.168.1.1。
【inet_ntoa】 將 十進制網絡字節序 轉換為 點分十進制IP格式的字符串。
【inet_pton】 是一個IP地址轉換函數,將 點分十進制的IP地址 轉換為 二進制網絡字節序 的IP地址。
【inet_ntop】 是一個IP地址轉換函數,將 二進制網絡字節序的IP地址 轉換為 點分十進制的IP地址。
【inet_addr】 函數可以把 點分十進制的IP地址字符串 轉化為 二進制網絡字節序 的IP地址,如inet_addr("192.168.1.166")
inet_addr 是一個計算機函數,功能是將一個點分十進制的IP轉換成一個長整數型數(u_long類型)等同于inet_addr()
【inet_addr】 函數可以轉化字符串,主要用來將一個十進制的數轉化為二進制的數,用途多于ipv4的IP轉化。
返回:若字符串有效則將字符串轉換為32位二進制網絡字節序的IPV4地址,否則為INADDR_NONE
總結
以上是生活随笔為你收集整理的【Socket网络编程】3.字节序转换函数htons、htonl ,地址转换函数inet_ntoa、inet_ntop、inet_pton、inet_addr的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Socket网络编程】5.单播、多播(
- 下一篇: 【深度学习】查准率、召回率、AP、mAP