1. 程式人生 > >套接字編程簡介: IPV4套接字地址結構/ 通用套接字地址結構/ IPV6套接字地址結構

套接字編程簡介: IPV4套接字地址結構/ 通用套接字地址結構/ IPV6套接字地址結構

說明 number sin ESS 套接字地址結構 length 編程 增加 str

IPv4套接字地址結構通常也稱為“網際套接字地址結構”,它以sockaddr_in命名,定義在<netinet/in.h>頭文件中。

struct in_addr
{
	in_addr_t s_addr;/*32-bit IPv4 address*/
					/*network byte ordered*/
};
struct sockaddr_in
{
	uint8_t sin_len;/*length if structure(16)*/
	sa_family_t sin_family;/*AF_INET*/
	in_port_t sin_port;/*16-bit TCP or UDP port number*/
						/*network byte ordered*/
	struct in_addr sin_addr;/*32-bit IPv4 address*/
						/*network byte ordered*/
	char sin_zero[8];	/*unused*/
};

對套接字地址結構做幾點一般性的說明。

1.長度字段sin_len是為了增加對OSI協議的支持而隨4.3BSD-Reno添加的。在此之前,第一個成員是sin_family,它是一個無符號短整數(unsigned short)。並不是所有的廠家都支持套接字地址結構的長度字段,而且POSIX規範也不要求有這個成員。該成員的數據類型uint8_t是典型的,符合POSIX的系統都提供這種形式的 數據類型。

正是因為有了長度字段,才簡化了長度可變套接字地址結構的處理。

套接字編程簡介: IPV4套接字地址結構/ 通用套接字地址結構/ IPV6套接字地址結構