in_addr是一個結構體,可以用來表示一個32位的IPv4地址。
基本介紹
- 外文名:in_addr
- 結構體頭檔案:#include <arpa/inet.h>
- 結構體樣式:struct in_addr {
- 代碼中的套用:server.sin_addr=
結構體頭檔案,結構體樣式,IP結構體的使用,代碼中的套用,
結構體頭檔案
#include <arpa/inet.h>
結構體樣式
struct in_addr { in_addr_t s_addr;};
結構體in_addr 用來表示一個32位的IPv4地址.
in_addr_t 一般為 32位的unsigned int,其位元組順序為網路順序(network byte ordered),即該無符號整數採用大端位元組序。.
其中每8位代表一個IP位址位中的一個數值.
例如192.168.3.144記為0x9003a8c0,其中 c0 為192 ,a8 為 168, 03 為 3 , 90 為 144
列印的時候可以調用inet_ntoa()函式將其轉換為char *類型.
IP結構體的使用
struct in_addr{ union { struct { u_char s_b1,s_b2,s_b3,s_b4; } S_un_b; //An IPv4 address formatted as four u_chars. struct { u_short s_w1,s_w2; } S_un_w; //An IPv4 address formatted as two u_shorts u_long S_addr;//An IPv4 address formatted as a u_long } S_un;#define s_addr S_un.S_addr};
代碼中的套用
server.sin_addr=*((in_addr *)he->h_addr);
同時,在Live555的源檔案中出現了以下的使用方法:
struct in_addr const& groupAddress() const { return fGroupAddress; }
struct in_addr destAddr = fDests->fGroupEId.groupAddress();
這裡fDest是一個單向鍊表,groupAddress()為fGroupEId中的方法。