SOCKET位址結構

2021-07-23 21:41:49 字數 913 閱讀 2646

sockaddr與sockaddr_in結構體簡介

struct sockaddr ;

sa_family是位址家族,或者叫協議簇,有網際協議(tcpip),ipx協議,等等,一般都是「af_***」的形式。通常大多用的是都是af_inet,表示tcpip協議。

sa_data是14位元組協議位址,裡面的資訊是ip位址和埠,可能是本機的也可能是其他機器的。

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

但一般程式設計中並不直接針對此資料結構操作,而是根據所用協議(如本地,ipv4,ipv6等)使用乙個與sockaddr等價的資料結構

//用於ipv4協議通訊的結構體sockaddr_in

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建立你所需要的資訊,

Socket位址結構

如bind函式的第二個引數型別就是通用套接字位址結構的指標,使用的時候一般需要把乙個ipv4 ipv6套接字位址結構強制轉換成乙個通用通用套接字位址結構再取位址 注意埠和位址都是使用網路位元組序,填寫時需要分別呼叫htons,htonl h host,s 16位short,l 32位long 將主機...

socket 的位址結構

在建立socket通訊的過程中位址起著很關鍵的作用,在設計tcp ip網路程式時,必須對 socket 的位址結構有清晰的認識。tcp ip 的位址資料結構。struct sockaddr struct in addr struct sockaddr in 網路位元組順序是tcp ip中規定好的一種...

socket 的位址結構

在建立socket通訊的過程中位址起著很關鍵的作用,在設計tcp ip網路程式時,必須對 socket 的位址結構有清晰的認識。tcp ip 的位址資料結構。struct sockaddr u short safamily 位址族,af char sa data 14 14位元組的特定協議位址 st...