sockaddr和sockaddr_in的区别
sockaddr和sockaddr_in详解
1、struct sockaddr和struct sockaddr_in这两个结构体用来处理网络通信的地址。
2、在各种系统调用或者函数中,只要和网络地址打交道,就得用到这两个结构体。
3、网络中的地址包含3个方面的属性:
(1) 地址类型: ipv4还是ipv6
(2) ip地址
(3) 端口
相应的,头文件有如下定义:
include <netinet/in.h>
struct sockaddr {
unsigned short sa_family; // 2 bytes address family, AF_xxx
char sa_data[14]; // 14 bytes of protocol address
};
// IPv4 AF_INET sockets:
struct sockaddr_in {
short sin_family; // 2 bytes e.g. AF_INET, AF_INET6
unsigned short sin_port; // 2 bytes e.g. htons(3490)
struct in_addr sin_addr; // 4 bytes see struct in_addr, below
char sin_zero[8]; // 8 bytes zero this if you want to
};
struct in_addr {