sockaddr_in是一个结构体,用于表示IPv4的套接字地址。它在网络编程中经常被使用,包含了IP地址和端口号等信息。 sockaddr_in结构体定义如下: 代码语言:c 复制 structsockaddr_in{shortintsin_family;// 地址族,一般为AF_INETunsignedshortintsin_port;// 端口号structin_addrsin_addr;// IP地址unsignedcharsin_ze...
sockaddr_in和sockaddr是并列的结构,指向sockaddr_in的结构体的指针也可以指向 sockadd的结构体,并代替它。也就是说,你可以使用sockaddr_in建立你所需要的信息, 在最后用进行类型转换就可以了bzero((char*)&mysock,sizeof(mysock));//初始化 mysock结构体名 mysock.sa_family=AF_INET; mysock.sin_addr.s_ad...
这两个结构体的长度相同,强制转换类型时不会丢失字节,也没有多余的字节。 可以认为,sockaddr 是一种通用的结构体,可以用来保存多种类型的IP地址和端口号,而 sockaddr_in 是专门用来保存 IPv4 地址的结构体。另外还有 sockaddr_in6,用来保存 IPv6 地址,它的定义如下: struct sockaddr_in6 { sa_family_t sin6_...
首先,我们需要明确,sockaddr_in结构体中的各个成员的数据类型。 structsockaddr_in { sa_family_t sin_family;/*协议族,通常为AF_INET*/in_port_t sin_port;/*网络字节序的端口号*/structin_addr sin_addr;/*IP地址结构体*/};/*Internet address.*/structin_addr { ...
sockaddr_in 是internet环境下套接字的地址形式。所以在网络编程中我们会对sockaddr_in结构体进行操作,使用sockaddr_in来建立所需的信息,最后使用类型转化就可以了。一般先把sockaddr_in变量赋值后,强制类型转换后传入用sockaddr做参数的函数:sockaddr_in用于socket定义和赋值;sockaddr用于函数参数。
sockaddr_in结构体简介 sockaddr_in(在netinet/in.h中定义):structsockaddr_in{shortintsin_family;/* Address family */unsignedshortintsin_port;/* Port number */structin_addrsin_addr;/* Internet address */unsignedcharsin_zero[8];/* Same size as struct sockaddr */};structin_addr{unsignedlongs...
struct sockaddr 和 struct sockaddr_in 这两个结构体用来处理网络通信的地址。 一、sockaddr sockaddr在头文件#include <sys/socket.h>中定义,sockaddr的缺陷是:sa_data把目标地址和端口信息混在一起了,如下: struct sockaddr { unsigned short sa_family;//2字节,地址族,AF_xxx ...
其实,sockaddr和sockaddr_in就是两个用于处理网络通信地址的结构体。sockaddr是在IPv4协议诞生之前就存在了,而sockaddr_in是在IPv4协议诞生之后被提出的,两者在数据结构上具有差异。下图为sockaddr和sockaddr_in的数据结构图。 (二)sockaddr和sockaddr_in区别是什么 根据上面的数据结构图,我们可以得到两者的结构体定义: (...
UNP编程:01---套接字地址结构体:sockaddr_in、sockaddr_in6、sockaddr_storage、INADDR_ANY、in6aadr_any,一、IPv4套接字地址结构(structsockaddr_in)#include<netinet/in.h>structin_addr{in_addr_ts_addr;/*32-bitIPv4address*//*networkbyteordered*/};s...