linux函式之sockaddr in結構

2021-06-23 07:14:17 字數 972 閱讀 6884

struct sockaddr ;

sa_family是位址家族,一般都是「af_***」的形式。好像通常大多用的是都是af_inet。

sa_data是14位元組協議位址。

此資料結構用做bind、connect、recvfrom、sendto等函式的引數,指明位址資訊。

但一般程式設計中並不直接針對此資料結構操作,而是使用另乙個與sockaddr等價的資料結構

sockaddr_in(在netinet/in.h中定義):

struct  sockaddr_in ;

struct  in_addr ;

typedef struct in_addr s_un_b;

struct s_un_w;

unsigned long s_addr;

} s_un;

} in_addr;

sin_family指代協議族,在socket程式設計中只能是af_inet

sin_port儲存埠號(使用網路位元組順序)

sin_addr儲存ip位址,使用in_addr這個資料結構

sin_zero是為了讓sockaddr與sockaddr_in兩個資料結構保持大小相同而保留的空位元組。

s_addr按照網路位元組順序儲存ip位址

sockaddr_in和sockaddr是並列的結構,指向sockaddr_in的結構體的指標也可以指向

sockadd的結構體,並代替它。也就是說,你可以使用sockaddr_in建立你所需要的資訊,

在最後用進行型別轉換就可以了bzero((char*)&mysock,sizeof(mysock));//初始化

mysock結構體名

mysock.sa_family=af_inet;

mysock.sin_addr.s_addr=inet_addr("192.168.0.1");

……等到要做轉換的時候用:

(struct sockaddr*)mysock

Linux之module param 函式學習

一.module param 1.為什麼引入 在使用者態下程式設計可以通過main 來傳遞命令列引數,而編寫乙個核心模組則可通過module param 來傳遞命令列引數.2.module param巨集是linux 2.6核心中新增的,該巨集被定義在include linux modulepara...

Linux之module param 函式學習

一.module param 1.為什麼引入 在使用者態下程式設計可以通過main 來傳遞命令列引數,而編寫乙個核心模組則可通過module param 來傳遞命令列引數.2.module param巨集是linux 2.6核心中新增的,該巨集被定義在include linux modulepara...

Linux之module param 函式學習

一.module param 1.為什麼引入 在使用者態下程式設計可以通過main 來傳遞命令列引數,而編寫乙個核心模組則可通過module param 來傳遞命令列引數.2.module param巨集是linux 2.6核心中新增的,該巨集被定義在include linux modulepara...