Unix網路程式設計 1 套接字位址結構

2021-10-05 20:07:06 字數 1470 閱讀 9638

ubuntu:/usr/include/netinet/in.h

#includestruct in_addr;

struct sockaddr_in ;

①sin_len-結構體長度字段。

②sin_family-協議族字段。可取的值為:af_unix(本地通訊)、af_inet(ipv4)、af_int6(ipv6)

③sin_port-16位的埠號

④sin_addr-32位ip位址

⑤sin_zero-未使用備用

常見的套結構位址字段型別如下圖所示。

套介面為了使得api可以實現協議無關性,定義了乙個通用的套介面

ubuntu:/usr/include/x86_64-linux-gnu/bits/socket.h

#include struct sockaddr;

在使用套介面api時,通過將其它位址結構強轉成此結構,傳遞給api。

ubuntu:/usr/include/netinet/in.h

#includestruct in6_addr;

#define sin6_len

struct sockaddr_in6 ;

字段說明:

①sin6_family-位址族字段,在這裡取af_inet6

②sin6_flowinfo-流標字段。低20位為流標,高12位保留。

③sin6_scope_id-對於具備範圍的位址,該欄位標識其範圍,常見的是鏈路區域性位址的介面索引。

新的通用套接字位址結構

對與上述通用結構的幾點說明。

①sockaddr_storage-足夠大,可以容納任何套接字位址結構。

②sockaddr_storage需要強轉成其它型別,才可方位資料。

ubuntu:/usr/include/x86_64-linux-gnu/sys/un.h

/usr/include/linux/un.h

#includestruct sockaddr_un;

對與位址結構的說明

②sun_path-路徑名,為空字元結尾

ubuntu中無此結構

#includestruct sockaddr_dl;

此結構一般很少用到,這裡就不贅述

各個套結構位址結構的比較

Unix網路程式設計學習筆記 1 套接字位址結構

大多數套接字函式,都需要乙個指向套接字位址結構的指標作為引數,每個協議族都定義了自己的套接字位址結構。這些結構的名字都是以sockadd 開頭,並以對應每個協議族的唯一字尾結尾.ipv4套接字位址結構也稱為 網際套接字位址結構 所以套接字的位址結構名為 sockaddr in in 為 intern...

UNIX網路程式設計 三 套接字位址結構

1.ipv4套接字位址結構 ipv4套接字位址以sockaddr in命名,定義在標頭檔案中。位址結構 struct in addr struct sockaddr in 2.通用套接字位址結構 對於大多數套接字函式 比如 bind,connect,sendto等等 的引數通常是套接字位址結構的引用...

UNIX網路程式設計卷1 套接字聯網API

internet一詞有多種含義。一是網際網 internet 採用tcp ip協議族通訊的任何網路都是網際網,網際網路就是乙個網際網。二是網際網路 internet 它是乙個專用名詞,特指從arpanet發展而來的連線全球各個isp的大型網際網。三是作為名詞性修飾詞,這時應根據情況分別譯成 網際網路...