sockaddr与sockaddr_in结构体简介
struct sockaddr {unsigned short sa_family; /* address family, AF_xxx */
char sa_data[14]; /* 14 bytes of protocol address */
};
sa_family是地址家族,一般都是“AF_xxx”的形式。好像通常大多用的是都是AF_INET。
sa_data是14字节协议地址。
此数据结构用做bind、connect、recvfrom、sendto等函数的参数,指明地址信息。
但一般编程中并不直接针对此数据结构操作,而是使用另一个与sockaddr等价的数据结构
sockaddr_in(在netinet/in.h中定义):
struct sockaddr_in {short int sin_family; /* Address family */
unsigned short int sin_port; /* Port number */
struct in_addr sin_addr; /* Internet address */
unsigned char sin_zero[8]; /* Same size as struct sockaddr */
};
struct in_addr {unsigned long s_addr;
};typedef struct in_addr {union {struct{unsigned char s_b1,s_b2,s_b3,s_b4;} S_un_b;struct {unsigned short s_w1,s_w2;} S_un_w;unsigned long S_addr;} S_un;
} IN_ADDR;
sin_family指代协议族,在socket编程中只能是AF_INET
sin_port存储端口号(使用网络字节顺序)
sin_addr存储IP地址,使用in_addr这个数据结构
sin_zero是为了让sockaddr与sockaddr_in两个数据结构保持大小相同而保留的空字节。
s_addr按照网络字节顺序存储IP地址
sockaddr_in和sockaddr是并列的结构,指向sockaddr_in的结构体的指针也可以指向
sockadd的结构体,并代替它。也就是说,你可以使用sockaddr_in建立你所需要的信息,
在最后用进行类型转换就可以了bzero((char*)&mysock,sizeof(mysock));//初始化
mysock结构体名
mysock.sa_family=AF_INET;
mysock.sin_addr.s_addr=inet_addr(“192.168.0.1”);
……
等到要做转换的时候用:
(struct sockaddr*)mysock
sockaddr与sockaddr_in结构体简介相关推荐
- c语言sockaddr_in结构体,转:sockaddr与sockaddr_in结构体详细讲解
sockaddr与sockaddr_in结构体详细讲解 二者区别 struct sockaddr { unsigned short sa_family; /* address family, ...
- linux sockaddr结构体,linux网络编程笔记 sockaddr_in结构体[转]
struct sockaddr { unsigned short sa_family; char sa_data[14]; }; 此数据结构用做bind.connect.recvfrom.sendto ...
- socket编程--sockaddr_in结构体操作
sockaddr结构体 sockaddr的缺陷: struct sockaddr是一个通用地址结构,这是为了统一地址结构的表示方法,统一接口函数,使不同的地址结构可以被bind(),connect() ...
- sockaddr_in结构体
点击进入结构如下: struct sockaddr_in { __uint8_t sin_len; sa_family_t sin_family; in_port_t sin_port; struct ...
- linux c 获取网络接口信息 ioct l函数 ifreq ifconf 结构体 简介
目录 ioctl struct ifreq struct ifconf ioctl 原型如下: #include <sys/ioctl.h> int ioctl(int fd, int r ...
- sockaddr_in 结构体
strcut sockaddr 是用来描述 IPv4 地址协议,原始结构体 sockaddr 已经被废弃掉了. 常使用 strcut sockaddr_in 类型. struct sockaddr_i ...
- 【FFmpeg视频播放器开发】解封装解码流程、常用API和结构体简介(一)
一.前言 在正式编写 FFmpeg 播放器前,我们需要先简单了解下所要用到的 FFmpeg 库.播放与解码流程.函数和相关结构体. 二.FFmpeg 库简介 库 介绍 avcodec 音视频编解码核心 ...
- sockaddr_in结构体的说明(成员:sin_family、sin_addr、sin_zero)
sockaddr_in是系统封装的一个结构体,具体包含了成员变量:sin_family.sin_addr.sin_zero 这个结构体被封装在ws2def.h中,具体的代码如下: typedef st ...
- golang 结构体简介
Go 通过类型别名(alias types)和结构体的形式支持用户自定义类型,或者叫定制类型.试图表示一个现实世界中的实体. 结构体由一系列命名的元素组成,这些元素又被称为字段,每个字段都有一个名称和 ...
最新文章
- Slf4j 包老冲突,每次排查半天,是什么原因?怎么解决?
- classpath路径(转)
- bugzilla dbd-mysql_Linux下安装Bugzilla——完整版
- python竞赛试题及答案_Python全国少儿编程竞赛参赛作品《自主数学练习小工具》解析...
- 八、梯度下降法和拟牛顿法
- python嵌套列表字典_python中嵌套列表转为字典
- 工作69:发布商品页面
- CSS多行显示省略号
- css 总结内容用到的绝对居中的几种方式
- ASP.NET中的注释 .
- [UE4]响应鼠标点击
- sqlserver数据库 表中字段值有空格,如何去除空格(例如char (5) 存入数据不足5位时sqlserver会自动补空格)...
- Starling 动画功能
- 详细User-Agent大全
- HTML实现分页功能
- c# wifi串口通信_C#串口通信 SerialPort类
- Http头:only-if-cached
- 《淘宝店铺营销推广一册通》一1.3 宝贝标题优化
- iOS之ffmpeg开发音视频编解码概要、SDL
- SPSS中,进行两独立样本T检验