套接字地址结构

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了套接字地址结构相关的知识,希望对你有一定的参考价值。

 

大多数套接字函数都需要一个指向套接字地址结构的指针作为参数。每个协议簇抵都定义它自己的套接字地址结构

这些结构的名字均以sockaddr_开头,并以对应每个协议簇的唯一后缀结尾

 

1.IPv4套接字地址结构

IPv4套接字地址结构通常称为:网际套接字地址结构

它以sockaddr_in命名

struct  in_addr{

in_addr_t  s_addr;//32位无符号整数类型

};

struct sockaddr_in{

unit8_t  sin_len;//套接字地址结构长度 它是一个无符号短整形 可以不设置它的值

sa_family_t  sin_family;//套接字地址结构的地址簇 任何无符号整数类型

in_port_t  sin_port;//TCP或UDP端口号 网络字节序 至少16位的无符号整数类型

struct in_addr  sin_addr;//IPv4地址 网络字节序

cahr   sin_zero[8];//不是必须要 保持对齐

};

2.通用套接字地址结构

当作为一个参数传递进任何套接字函数时,套接字地址结构总是以引用形式(也就是以指向该结构的指针)来传递

然而以这样的指针作为参数之一的任何套接字函数必须处理来自所支持的任何协议簇的套接字地址结构

有了ANSI C后解决办法很简单:void *是通用的指针类型

然而套接字函数在ANSI C之前定义的 采取的方法是定义一个通用套接字地址结构

struct  sockaddr{

uint8_t  sa_len;

sa_family_t  sa_family;//地址簇类型

cahr  sa_data[14];//

}

于是套接字函数被定义为以指向某个通用套接字地址结构的一个指针作为其参数之一

 

以上是关于套接字地址结构的主要内容,如果未能解决你的问题,请参考以下文章

套接字地址结构

套接字地址结构

套接字编程

新的通用套接字地址结构

IPv4套接字地址结构

IPv6套接字地址结构