#includeunsigned long int htonl(unsigned long int hostlong);
unsigned short int htons(unsigned short int hostshort);
unsigned long int ntohl(unsigned long int netlong);
unsigned short int ntohs(unsigned short int netshort);
htonl表示host to network long,即長整形的主機位元組順序轉化為網路位元組順序。
在這4個函式中,長整形函式通常用來轉換ip位址,短整型通常用來轉換埠號。(當然也不限於此,任何格式化的資料通過網路傳輸時,否應該使用這些函式來轉換位元組順序。)
#includestruct sockaddr_in
tcp/ip協議族專用位址。
所有的專用socket位址型別的變數在實際使用的時候都需要轉化為通用socket位址型別(sockaddr),因為所有的socket程式設計介面使用的位址引數型別都是sockaddr。
inet_addr函式將點分十進位制字串表示的ipv4位址轉化為網路位元組序整數表示的ipv4位址,他失敗時返回inaddr_none。#includein_addr_t inet_addr(const char* strptr);
int inet_aton(const char* cp, struct in_addr* inp);
char* inet_ntoa(struct inaddr in);
inet_aton與inet_addr功能相同,但是將結果儲存於引數inp指向的位址結構中,失敗時返回0,成功時返回1。
inet_ntoa將網路位元組序整數表示的ipv4位址轉化為點分十進位制表示的ipv4位址。但是需要注意的是,該函式內部用乙個靜態變數儲存轉化結果,函式的返回值指向該靜態位址,因此inet_ntoa是不可用的。
下面的這對更新的函式也能完成前面3個函式的功能,並且他們同時適用ipv4和ipv6
#includeint inet_pton(int af, const char* src, void* dst);
const char* inet_ntop(int af, const void* src, char* dst, socklen_t cnt);
inet_pton函式將字串表示的ip位址src(用點分十進位制字串表示的ipv4位址或用十六進製制字串表示的ipv6位址)轉換成用網路位元組順序整數表示的ip位址,並把轉換結果儲存於dst指向的記憶體中。其中,af引數指定位址族,可以是af_inet或者af_inet6。inet_pton成功時返回1,失敗時返回0,並設定errno。
inet_ntop函式進行相反的轉換,前3個引數的含義與inet_pton的引數相同,最後乙個引數cnt指向目標儲存單元的大小。下面兩個巨集能指定這個大小(分別用於ipv4和ipv6)。
#include#define inet_addrstrlen 16
#define inet6_addrstrlen 46
常用函式總結
isset 檢查變數是否設定 unset 銷毀變數 var dump 列印變數的詳細資訊 echo 輸出乙個或多個字串 print 輸出字串 printf 輸出格式化字串 sprintf return a formatted string print r 列印關於變數的易於解釋的資訊 d efine...
linux awk常用函式總結
gsub r,s 在整個 0中用s替代r gsub r,s,t 在整個t中用s替代r index s t 返回s中字串t的第一位置 length s 返回s長度 match s r 測試s是否包含匹配r的字串 split s a fs 在fs上將s分成序列a sprint fmt,exp 返回經fm...
MATLAB常用函式總結
currentfolder pwd addpath genpath currentfolder size 獲取矩陣的行數和列數 r size a,1 該語句返回的時矩陣 a的行數,c size a,2 該語句返回的時矩陣 a的列數。length max size zeros 函式 生成零矩陣 one...