我的第一个结构在这个技术手册 9? 中''!+6。这个结构为许多类型的
套接字储存套接字地址信息:
!+
D
++++!#+ +=BE
++++ +=FGE
HE
=B 能够是各种各样的类型,但是在这篇文章中都是;75=%>9;。= 包
含套接字中的目标地址和端口信息。这好像有点不明智。
为了处理 !+,程序员创造了一个并列的结构:!+
=;;代表;;。
!+=
D
++++ ++=BE
++++!#+ ++=E
++++!+=+=E
++++!#+ +=IFGE
HE
用这个数据结构可以轻松处理套接字地址的基本元素。注意 =I它被加入到这
个结构,并且长度和 !+ 一样应该使用函数 I或 来全部置
零。同时,这一重要的字节,一个指向 = 结构体的指针也可以被指向结构体
并且代替它。这样的话即使 想要的是 !++J,你仍然可
以使用 !+=,并且在最后转换。同时,注意 =B 和 !+
中的 =B 一致并能够设置为;75=%>9;。最后,= 和 =
必须是网络字节顺序%"+CB+)!
struct sockaddr
{
unsigned short int sa_family;
char sa_data[14];
};
1
、
sa_family
为调用
socket()
时的
domain
参数
,
即
AF_xxxx
值
.
2
、
sa_data
最多使用
14
个字符长度
.
此
sockaddr
结构会因使用不同的
socket domain
而有不同结构定义
,
例如使用
AF_INET domain,
其
socketaddr
结构定义便为
struct socketaddr_in
{
unsigned short int sin_family;
uint16_t sin_port;
struct in_addr sin_addr;
5