一、结构体 struct sockaddr_in, struct sockaddr, struct in_addr struct sockaddr_in, struct sockaddr,struct in_addr,这是网络编程中常用的结构体,每次都记不住它们各自的成员是啥,需要临时查,为方便以后的查看,在这里总结下。 struct sockaddr { unsigned short sa_family; /* 地址族, AF_xxx */ char s...
struct sockaddr_in/ struct sockaddr_in6结构体 struct sockaddr_in{ sa_family_tsin_family; //地址族,常用AF_INET uint16_t sin_port; //16位TCP/UDP端口号 struct in_addr sin_addr; //32位IP地址 cha sin_zero[8] //不使用 }; struct in_addr{ in_addr_t s_addr; //32位IPV4地址 } struc...
一、结构体 struct sockaddr_in, struct sockaddr, struct in_addr struct sockaddr_in, struct sockaddr,struct in_addr,这是网络编程中常用的结构体,每次都记不住它们各自的成员是啥,需要临时查,为方便以后的查看,在这里总结下。 struct sockaddr { unsigned short sa_family; /* 地址族, AF_xxx */ char s...
/* 字符数组sin_zero[8]的存在是为了保证结构体struct sockaddr_in的大小和结构体struct sockaddr的大小相等 */ }; struct sockaddr是通用的套接字地址,而struct sockaddr_in则是internet环境下套接字的地址形式,二者长度一样,都是16个字节。二者是并列结构,指向sockaddr_in结构的指针也可以指向sockaddr。一般情况下...
通常情况下,为了方便使用和处理不同类型的网络地址,会使用sockaddr的更具体的子结构,如sockaddr_in(用于IPv4)或sockaddr_in6(用于IPv6)。这些子结构包含了更详细的地址信息,但都包含一个sockaddr结构作为其第一个成员,以便能够与通用的sockaddr进行转换和兼容操作。©...
// 注意:对于IPv6地址,应该使用 sockaddr_in6 结构体 if (rp->ai_family == AF_INET) { // IPv4 addr = &((struct sockaddr_in *)rp->ai_addr)->sin_addr; } else { // IPv6 addr = &((struct sockaddr_in6 *)rp->ai_addr)->sin6_addr; } if (inet_ntop(rp->ai_family, addr, ...
在linux环境下,结构体struct sockaddr_in在/usr/include/netinet/in.h中定义,具体如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 /* Structure describing an Internet socket address. */ structsockaddr_in { __SOCKADDR_COMMON (sin_); in_port_t sin_port;/* Port number. */ ...
sockaddr:sockaddr是一个通用的套接字地址结构,用于表示套接字地址。它是sockaddr_in、sockaddr_in6等具体地址结构的基类。在Windows编程中,sockaddr结构通常定义在winsock.h或winsock2.h中。 2. struct类型重定义的含义和可能原因 struct类型重定义错误通常发生在同一个编译单元中多次定义了同一个结构体。在Windows编程...
(struct sockaddr *)(&server_addr)这个是一个强制类型转换,就是将结构体&server_addr强制转换成struct sockaddr *类型。这个是c语言范畴的东西。因为我们只能创建和填充sockaddr_in和sockaddr_in6的结构体和里面的字段,但是很多socket参数只接受sockaddr类型的结构体,所以在这里要强制转换一下,就我记得...
sockaddr和sockaddr_in的区别 2015-05-01 22:43 −struct sockaddr和struct sockaddr_in这两个结构体用来处理网络通信的地址。 在各种系统调用或者函数中,只要和网络地址打交道,就得用到这两个结构体。 网络中的地址包含3个方面的属性: 1 地址类型: ipv4还是ipv6 2 ip地址 3 端口 相应的,头文件有如下定义:...