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_un结构体的介绍:

sockaddr_un

Unix socket address record.

Declaration

Source position: socketsh.inc line 152

type sockaddr_un = packed record

sun_family: sa_family_t;//sa_family_t的类型是WORD,即unsiged short

Address family

sun_path: array [0..107] of Char;

File name

end;

Description

sockaddr_un is used to store a UNIX socket addres for the Bind, Recv and Send calls.

转载于:https://www.cnblogs.com/hnrainll/archive/2011/04/24/2026430.html

(摘录)sockaddr与sockaddr_in,sockaddr_un结构体详细讲解相关推荐

  1. Linux网络编程之sockaddr与sockaddr_in,sockaddr_un结构体详细讲解

    Linux网络编程之sockaddr与sockaddr_in,sockaddr_un结构体详细讲解 (1)sockaddr struct sockaddr { unsigned  short  sa_ ...

  2. sockaddr,sockaddr_in,sockaddr_un结构体详细讲解

    struct sockaddr {unsigned short sa_family; /* address family, AF_xxx */char sa_data[14]; /* 14 bytes ...

  3. sockaddr与sockaddr_in,sockaddr_un结构体详解

    struct sockaddr { unsigned short sa_family;     /* address family, AF_xxx */ char sa_data[14];       ...

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

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

  5. Linux网络编程之sockaddr与sockaddr_in,sockaddr_un分析

    sockaddr struct sockaddr { unsigned short sa_family; /* address family, AF_xxx */ char sa_data[14]; ...

  6. x264重要结构体详细说明(4): x264_t

    本博客转载于:http://nkwavelet.blog.163.com/blog/static/227756038201431010539683/ x264_t是一个控制X264编码的全局性结构体, ...

  7. 看了这篇c语言结构体精讲解,你难道还怕你不会吗?

    本文主要介绍结构体入门,结构体指针的教学,请读者讲此段代码复制在Devc++,以便更好阅读体验.谢谢. #include<stdio.h> //结构体教学 首先,结构体的格式是在主函数前先 ...

  8. STM32—PID结构体使用讲解

    1.这篇文章的目的 由于本人之前做过的很多项目中,基本上都用到了pid算法,发现pid用起来是真香,不仅算法简单,控制的效果也是很不错的,基本上都能够达到要求.但是随着我做过的项目多了,发现每次做一个 ...

  9. sockaddr与sockaddr_in结构体简介

    struct sockaddr {unsigned short sa_family; /* address family, AF_xxx */ char sa_data[14]; /* 14 byte ...

最新文章

  1. opencv 行与列
  2. python 文件更新_使用Python批量更新服务器文件【新手必学】
  3. 理解Java中的弱引用(Weak Reference)
  4. 两台服务器安装redis集群_Redis Cluster搭建高可用Redis服务器集群
  5. ifconfig命令找不到_Linux基本命令
  6. Live meeting+OCS 二次开发手记
  7. 分布式计算框架Gearman原理详解
  8. CodeForces999E 双dfs // 标记覆盖 // tarjan缩点
  9. 简述HTML语言概念,HTML语言的基本概念和基本格式.doc
  10. Nagios插件开发指导
  11. python中eval函数怎么用_python3中eval函数用法简介
  12. 计算机主板南桥的作用,电脑主板上的南北桥芯片的位置和作用介绍
  13. 图解SpringMVC工作流程
  14. 基于FPGA和ABZ增量式编码器的转子位置检测
  15. C语言从入门到入土(三)
  16. 解决vue项目在ie、360兼容模式下空白页面问题
  17. MongoDB 常见问题 - 解决找不到 mongo、mongod 命令的问题
  18. SPH物体漂浮模拟 之 波海泛舟
  19. 肖特基二极管与整流二极管谁能更胜一筹?
  20. 关于接入新浪微博第三方登录

热门文章

  1. FZU - 2037 -Maximum Value Problem(规律题)
  2. uva 524(Prime Ring Problem UVA - 524 )
  3. Angular问题03 @angular/material版本问题
  4. python的赋值与参数传递(python和linux切换)
  5. CNN for Visual Recognition (assignment1_Q1)
  6. Android核心分析之二十七Android GDI 之SurfaceFlinger之动态结构示
  7. OpenStack 之Nova添加扩展API流程,附带资源的查找功能
  8. 驱动开发 环境搭建(VS2008+WDK+DDKWzard)
  9. Java实现将文件或者文件夹压缩成zip
  10. CentOS6.5 搭建Open***服务器