UNIX网络编程(6)--套接字地址结构、通用套接字地址结构

来源:互联网 发布:在淘宝网上怎么开店 编辑:程序博客网 时间:2024/05/22 20:28
#include <netinet/in.h>/**IPV4套接字地址结构**/struct in_addr{in_addr s_addr;//32位IPV4地址,这是无符号整数,网络字节序};/*POSIX只关注sin_family,sin_port,sin_addr,所有网络套接字地质结构都至少16字节*/struct sockaddr_in{uint8_t sin_len;//无符号八位整形,套接字地址长度(16字节)sa_family_t sin_family;//unsigned shortin_port_t sin_port;//16位TCP、UDP端口号,网络字节序struct in_addr sin_addr;//32位IPV4地址,这是个结构,网络字节序char sin_zero[8];//未使用};#include <sys/socket.h>/***通用套接字地址结构***/struct sockaddr{uint8_t sa_len;sa_family_t sa_family;//地址族,AF_XXXchar sa_data[14];//与协议相关的地址};#include <netinet/in.h>/***IPV6套接字地址结构****/struct in6_addr{uint8 s6_addr[16];//128位IPV6地址,整数,网络字节序};#define SIN6_LEN//支持sin6_len的地址必须定义struct sockaddr_in6{uint8_t sin6_len;//套接字地址长度(28字节)sa_family_t sa6_family;//AF_INET6in_port_t sin6_port;//端口uint32 sin6_flowinfo;//流标,未定义struct in6_addr sin6_addr;//IPV6地址,结构体uint32_t sin6_scope_id//?;};/***新的通用套接字地址结构***/struct sockaddr_storage{uint8_t ss_len;//本结构体的长度sa_family_t ss_family;//地址族,AF_XXX//可能还有其他字段};/**Unix域套接字结构**/#include <sys/un.h>struct sockaddr_un{sa_family_t sun_family;/*AF_LOCAL*/char sun_path[104];//路径名字符串};/***数据链路套接字地址***/#include <net/if_dl.h>//interfacestruct sockaddr_dl{uint8_t sdl_len;sa_family_t sdl_family;//AF_LINKuint16_t sdl_index;//>0,????uint8_t sdl_type;//IFT_ETHER,ect.????uint8_t sdl_nlen;//接口名称长度uint8_t sdl_alen;//链路层地址长度uint8_t sdl_slen;//链路层selector长度。??char sdl_data[12];//接口名字(从sdl_data[0]开始)和链路层地址(从sdl_data[sdl_nlen]开始)};

原创粉丝点击