struct sockaddr定義及延伸

2021-07-11 20:11:06 字數 1245 閱讀 8717

跟蹤看一下 strcut sockaddr 是怎麼定義的,這個定義在 /usr/include/bits/socket.h裡

引用

struct

sockaddr

;

由上可見,sockaddr 結構體的第乙個成員是乙個巨集定義,再來看一下這個巨集定義(在/usr/include/bits/sockaddr.h 裡):

引用

#define __sockaddr_common(sa_prefix)sa_family_t sa_prefix##family

由注釋可知,利用這個巨集,我們根據需要,在 sockaddr 裡可以填入不同的位址型別規範,如 struct sockaddr,struct sockaddr_in,struct sockaddr_un 等。

同樣在 

/usr/include/bits/sockaddr.h裡看到上面的 sa_family_t 的原型是:

引用

typedef

unsigned

short

int

sa_family_t;

由此可見,是個無符號短整型。

例如,我們用的是 unix 域套接字,那麼可以在 /usr/include/sys/un.h 中觀察到 sockaddr_un的定義:

引用

struct

sockaddr_un

;

那麼,根據上面的 __sockaddr_common 的定義,可知結構體中的第乙個成員為:

sun_family 

所以,這個結構題可改寫為:

struct

sockaddr_un

;[/quote]

由於 sa_family 是無符號整型,而在 /usr/include/bits/socket.h 裡定義的協議型別 (pf_***(實際上被重定義為 af_***) 便可以賦給 sun_family,如 selfdefine_address.sun_family= af_unix (表示使用 unix 域套接字)。

淡定,淡定,淡定

我的思緒過分調皮,有時候有個靈感覺得挺好還沒來得及記下來就又去想別的事情了,真不知道自己是怎麼回事。有時候糾結一件事情,是因為不知道如何選擇下面的行動,通常我看到乙個問題後都會冒出a b c三種選擇,如果其中乙個優勢特別顯著還好要是勢力相當就玩完了,我就會很矛盾很糾結,通常是先往東在往西或許還要來回...

Spss中定比 定距 定序 定類的區別

spss中定比 定距 定序 定類的區別 1 定比 主要是數值或數字型別,可以做加減運算,目的是得到更加精確的值,比如身高或者體重之類的 2 定距 主要是數值或數字型別,有單位,可以做加減運算,但是不能做乘除運算,比如溫度之類的 3 定類 主要為型別分類,但是分類是沒有大小區分的,比如表示性別,用1表...

springboot Scheduled定時任務

兩種實現方式 一種是註解,另一種是讀取資料庫 首先啟動類 enablescheduling 開啟定時任務schedule 第一種 component public class schedue scheduled cron 0 18 16 表示 在指定時間執行 public void fixtimee...