麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 系統 > Unix > 正文

UNIX網絡編程讀書筆記:套接口地址結構

2024-06-28 13:27:32
字體:
來源:轉載
供稿:網友
UNIX網絡編程讀書筆記:套接口地址結構前言

大多數套接口函數都需要一個指向套接口地址結構的指針作為參數。每個協議族都定義它自己的套接口地址結構。這些結構的名字均以“sockaddr_”開頭,并以對應每個協議族的唯一后綴結束。

ipv4套接口地址結構

IPv4套接口地址結構通常也稱為”網際套接口地址結構“,它以”sockaddr_in“命名,定義在頭文件<netinet/in.h>中。其POSIX定義如下:

/* sockaddr_in */struct in_addr {    in_addr_t        s_addr;         /* 23 bits IPv4 address */};                                   /* network byte ordered */struct sockaddr_in {    uint8_t          sin_len;        /* length of structure(16) */    sa_family_t      sin_family;     /* AF_INET */    in_port_t        sin_port;       /* 16-bit TCP or UDP port number */                                     /* network byte ordered */    struct in_addr   sin_addr;       /* 32-bit IPv4 address */                                     /* network byte ordered */    char             sin_zero[8];    /* unused */};
說明:

(1)除非涉及到路由套接口,否則對于長度成員sin_len,我們無需設置,也無需檢查

(2)IPv4地址和TCP或UDP端口號在套接口地址結構中總是以網絡字節序來存儲,我們在使用這些成員時,必須牢記這一點。

(3)可以有兩種不同的方法來訪問32位IPv4地址。例如如果serv定義為網際套接口地址結構,那么serv.sin_addr給出的32位IPv4地址將是一個in_addr結構,而serv.sin_addr.s_addr給出的32位IPv4地址則是一個in_addr_t(通常是無符號的32位整數)。

(4)sin_zero成員暫不使用,但總是將它設置為0. 為方便起見,在初始化結構時,我們一般是將整個結構設置為0,而不僅僅是設置sin_zero成員為0. 雖然多數結構的使用不要求這一成員為0,但當捆綁一個非通配IPv4地址時,此成員必須為0.

(5)套接口地址結構僅在給定主機上使用:雖然結構中的某些成員(如IP地址和端口號)用在不同主機間的通信中,但結構本身并不參與通信。

通用套接口地址結構

當作為參數傳遞給任一個套接口函數時,套接口地址結構總是通過指針來傳遞,但是,通過指針來取得此參數的套接口函數必須處理來自所支持的任何協議族的套接口地址結構。

有一個問題是如何聲明所傳指針的數據類型。ANSI C 中有很簡單的解決辦法:它有通用的指針類型void *。但是,套接口函數是在ANSI C 之前定義的。1982年采用了這一的一個辦法:在<sys/socket.h>頭文件中定義一個通用的套接口地址結構,如下:

/* sockaddr */struct sockaddr {    uint8_t        sa_len;        sa_family_t    sa_family;        /* address family: AF_xxx value */    char           sa_data[14];      /* PRotocol-specific address */};

于是,套接口函數被定義為采用指向通用套接口地址結構的指針。這就要求對這些函數的任何調用都必須將指向特定于協議的套接口地址結構的指針類型轉換成指向通用套接口地址結構的指針。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 一区二区三区日韩精品 | 日本xxxx色视频在线观看免费, | 欧美一级免费看 | 激情亚洲一区二区 | 黄视频网站免费观看 | 国产一级毛片高清视频 | 成人国产精品一区二区毛片在线 | 99精品无人区乱码在线观看 | 国产亚洲精品美女久久久 | 黄色高清免费网站 | 高清一区二区在线观看 | 毛片成人| 色综合欧美| 国产精品jk白丝蜜臀av软件 | 最新国产毛片 | 最新欧美精品一区二区三区 | 色婷婷久久久久久 | 黄色网址在线视频 | 最新黄色电影网站 | wankz100%videos| 91精品观看91久久久久久国产 | 色999久久久精品人人澡69 | 综合网日日天干夜夜久久 | 国产1区在线观看 | 97干色 | 国产精品午夜未成人免费观看 | 666sao | 久久久www成人免费精品 | 哪里可以看免费的av | 国产一精品一av一免费爽爽 | 男人天堂免费 | 亚洲成人高清在线观看 | 51国产偷自视频区视频小蝌蚪 | 中文字幕在线免费播放 | 亚洲日本韩国在线观看 | 国产国语毛片 | 久久国产精品免费视频 | 噜噜噜在线 | 日本欧美一区二区 | 国产在线观看91一区二区三区 | 亚洲成人自拍电影 |