socket地址結(jié)構(gòu)體

ipv4套接字地址結(jié)構(gòu)

定義在<netline/in.h>頭文件之中
struct in_addr{
    in_addr_t s_addr;//in_addr_t IPV4地址,一般為uint32_t(無(wú)符號(hào)的32位整數(shù)) 
}
struct sockaddr_in{
    uint8_t sin_len;//結(jié)構(gòu)體的長(zhǎng)度
    sa_family_t sin_family;//協(xié)議族
    in_port_t sin_port;//端口號(hào) in_port_t   TCP或UDP端口,一般為uint16_t(無(wú)符號(hào)的16位整數(shù))
    struct in_addr sin_addr;//32位IPv4地址
    char sin_zero[8];//感覺沒設(shè)么軟用
}

通用套接字地址結(jié)構(gòu)

定義在<sys/socket.h>

struct sockaddr{
    uint8_t sa_len;
    sa_family_t sa_family;
    char sa_data[14];
}

通用套接字地址結(jié)構(gòu)唯一的用途就是對(duì)指向特定于協(xié)議的套接字地址結(jié)構(gòu)的指針執(zhí)行類型強(qiáng)制轉(zhuǎn)換.

IPV6套接字地址結(jié)構(gòu)

定義在<netinet/in.h>
struct in6_addr{
  uint8_t s6_addr[16];//16個(gè)8字節(jié)的無(wú)符號(hào)int型構(gòu)成128位IPv6
}
struct sockaddr_in6{
    uint8_t sin6_len;//結(jié)構(gòu)體長(zhǎng)度
    sa_family_t sin6_family;//協(xié)議族
    in_port_t sin6_port;
    uint32_t sin6_flowinfo;//分成兩個(gè)字段,低序20位是流標(biāo),高序12位保留
    struct in6_addr sin6_addr;
    uint32_t sin6_scope_id;//標(biāo)識(shí)具備范圍的地址,最常見的是鏈路局部地址的結(jié)構(gòu)索引
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容