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结构体简介相关推荐

  1. c语言sockaddr_in结构体,转:sockaddr与sockaddr_in结构体详细讲解

    sockaddr与sockaddr_in结构体详细讲解 二者区别 struct sockaddr { unsigned short sa_family;     /* address family, ...

  2. linux sockaddr结构体,linux网络编程笔记 sockaddr_in结构体[转]

    struct sockaddr { unsigned short sa_family; char sa_data[14]; }; 此数据结构用做bind.connect.recvfrom.sendto ...

  3. socket编程--sockaddr_in结构体操作

    sockaddr结构体 sockaddr的缺陷: struct sockaddr是一个通用地址结构,这是为了统一地址结构的表示方法,统一接口函数,使不同的地址结构可以被bind(),connect() ...

  4. sockaddr_in结构体

    点击进入结构如下: struct sockaddr_in { __uint8_t sin_len; sa_family_t sin_family; in_port_t sin_port; struct ...

  5. linux c 获取网络接口信息 ioct l函数 ifreq ifconf 结构体 简介

    目录 ioctl struct ifreq struct ifconf ioctl 原型如下: #include <sys/ioctl.h> int ioctl(int fd, int r ...

  6. sockaddr_in 结构体

    strcut sockaddr 是用来描述 IPv4 地址协议,原始结构体 sockaddr 已经被废弃掉了. 常使用 strcut sockaddr_in 类型. struct sockaddr_i ...

  7. 【FFmpeg视频播放器开发】解封装解码流程、常用API和结构体简介(一)

    一.前言 在正式编写 FFmpeg 播放器前,我们需要先简单了解下所要用到的 FFmpeg 库.播放与解码流程.函数和相关结构体. 二.FFmpeg 库简介 库 介绍 avcodec 音视频编解码核心 ...

  8. sockaddr_in结构体的说明(成员:sin_family、sin_addr、sin_zero)

    sockaddr_in是系统封装的一个结构体,具体包含了成员变量:sin_family.sin_addr.sin_zero 这个结构体被封装在ws2def.h中,具体的代码如下: typedef st ...

  9. golang 结构体简介

    Go 通过类型别名(alias types)和结构体的形式支持用户自定义类型,或者叫定制类型.试图表示一个现实世界中的实体. 结构体由一系列命名的元素组成,这些元素又被称为字段,每个字段都有一个名称和 ...

最新文章

  1. Slf4j 包老冲突,每次排查半天,是什么原因?怎么解决?
  2. classpath路径(转)
  3. bugzilla dbd-mysql_Linux下安装Bugzilla——完整版
  4. python竞赛试题及答案_Python全国少儿编程竞赛参赛作品《自主数学练习小工具》解析...
  5. 八、梯度下降法和拟牛顿法
  6. python嵌套列表字典_python中嵌套列表转为字典
  7. 工作69:发布商品页面
  8. CSS多行显示省略号
  9. css 总结内容用到的绝对居中的几种方式
  10. ASP.NET中的注释 .
  11. [UE4]响应鼠标点击
  12. sqlserver数据库 表中字段值有空格,如何去除空格(例如char (5) 存入数据不足5位时sqlserver会自动补空格)...
  13. Starling 动画功能
  14. 详细User-Agent大全
  15. HTML实现分页功能
  16. c# wifi串口通信_C#串口通信 SerialPort类
  17. Http头:only-if-cached
  18. 《淘宝店铺营销推广一册通》一1.3 宝贝标题优化
  19. iOS之ffmpeg开发音视频编解码概要、SDL
  20. SPSS中,进行两独立样本T检验

热门文章

  1. 【Autojs】京东自动退货脚本
  2. java 练习之生成随机四位验证码
  3. Android实现公共公钥加密私钥解密(可分段加密分段解密)
  4. 字符、字符串、字符流以及字符串函数的超详细讲解
  5. 支持UEFI的原装win10安装U盘制作教程
  6. 家用打印机费用成本高怎么办?
  7. Docker与容器的区别
  8. 2022年最新浙江交安安全员考试题库及答案
  9. python字典合并输入用字符_左右用R右手Python9——字符串合并与拆分
  10. C语言两个按键分别控制两个灯,用C语言模拟楼道灯开关控制程序,两个开关都能控制灯的亮灭...