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

转载 2012年03月23日 10:47:08
#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 short
	in_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_XXX
	char 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_INET6
	in_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>//interface
struct sockaddr_dl
{
	uint8_t sdl_len;
	sa_family_t sdl_family;//AF_LINK
	uint16_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]开始)
};

相关文章推荐

Unix网络编程(一)-套接字地址结构

本文为学习经验的总结,绝大部分引用自Unix网络编程

Unix网络编程(一):套接字地址结构

1. 简介在ubuntu下写socket程序时,经常会看到那几个sockaddr的struct, 总是反应不过来它们的区别是什么,因此需要整理并归纳一下这些结构。2. 特定IP协议的套接字地址结构1....

Unix网络编程(二)套接字地址结构常用函数

注明:本文为学习经验的总结,绝大部分引用自Unix网络编程卷一,有错误或者交流意见请发邮件至yb.zhaoyubo@gmail.com.非常感谢 上篇文章简单介绍了几个金...

【UNIX网络编程(一)】套接字地址结构、网络字节序和地址转换函数

引言:套接字地址结构在网络编程的每个实现中都要用到,因此掌握套接字地址结构是以后编写网络程序的前提,地址结构可以在两个方向上传递:从进程到内核和从内核到进程。地址转换函数在地址的文本表达和他们存放在套...

Unix网络编程 卷1 第3章:套接字编程简介(套接字地址结构)

一、IPv4套接字地址结构 IPv4套接字地址结构通常称为“网际套接字地址结构”,它以sockadd_in命名。头文件及声明如下: #include struct sockaddr_in{ ...
  • iFuMI
  • iFuMI
  • 2016年09月09日 19:58
  • 231

我的网络编程学习之路——套接字地址结构

1.套接字地址结构 大多数套接字函数都需要一个指向套接字地址结构的指针作为参数。每个协议族都定义它自己的套接字地址结构。这些结构的名字均以sockaddr_开头,并以对应每个协议族的唯一后缀结尾。 1...

UNIX网络编程卷1:套接字联网-第3章:套接字编程-套接字地址结构和值结果参数

套接字地址结构: 首先找到定义套接字地址结构的文件,我使用的ubuntu14.04,路径:/usr/include/netinet/in.h 1.IPV4套接字地址结构 2.IPV6套接字...

Unix套接字地址结构

#include /**IPV4套接字地址结构**/ struct in_addr { in_addr s_addr;//32位IPV4地址,这是无符号整数,网络字节序 }; /*POSIX只...

套接字地址结构

套接字地址结构: A. IPV4套接字地址结构:          IPV4套接字地址结构也通常称为“网际套接字地址结构”,它以sockaddr_in命名,定义在头文件中。           ...

套接字地址结构及大小端笔记

《unix网络编程》第三章笔记 每个协议族都定义了自己的套接字地址结构。这些结构体的名字均以sockaddr_开头,并以对应每个协议族的唯一后缀结尾。 IPV4套接字地址结构,以sockaddr_...
  • wustzjf
  • wustzjf
  • 2016年02月26日 09:19
  • 620
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:UNIX网络编程(6)--套接字地址结构、通用套接字地址结构
举报原因:
原因补充:

(最多只允许输入30个字)