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...