struct sockaddr定义在/usr/include/linux/socket.h

struct sockaddr {unsigned short ss_family;char ss_data[128 - sizeof(unsigned short)];    // 14

}

struct sockaddr_in定义在/usr/include/netinet/in.h

struct sockaddr_in {in_port_t sin_port;struct in_addr sin_addr;      //struct in_addr {//  unsigned long s_addr;   //32位的IP地址//}/* Pad to size of `struct sockaddr'. */unsigned char sin_zero[sizeof (struct sockaddr) -__SOCKADDR_COMMON_SIZE -sizeof (in_port_t) -sizeof (struct in_addr)];   // 8

}                      // sin_zero[8]的存在是为了保证struct sockaddr_in的大小和struct sockaddr的大小相等

  struct sockaddr是通用的套接字地址。

  struct sockaddr_in是internet环境下套接字的地址形式。

  两者的长度一样,都是16个字节。二者是并列结构,指向sockaddr_in结构的指针也可以指向sockaddr结构。一般情况下,需要把sockaddr_in结构强制转换成sockaddr结构再传入系统调用函数中。

struct sockaddr_in servaddr;bind(socket_fd, (struct sockaddr*)&servaddr, sizeof(servaddr));

  BSD网络软件中包含了两个函数,用来在二进制地址格式和点分十进制字符串格式之间互相转换:

  仅支持IPV4: 

in_addr_t inet_addr(const char *cp);char *inet_ntoa(struct in_addr in);

  同时支持IPV4和IPV6:

const char *inet_ntop(int domain, const void *addr, char *str, socklen_t size);int inet_pton(int domain, const char *str, void *addr);

  通常的用法:

  int sock_fd;struct sockaddr_in my_addr;sock_fd = socket(AF_INET, SOCK_STREAM, 0);my_addr.sin_family = AF_INET;   //
my_addr.sin_port = htons(MyPort); //
my_addr.sin_addr.s_addr = inet_addr("127.0.0.1");bzero(&(my_addr.sin_zero), 8);   // zero the rest of the struct// memset(&my_addr.sin_zero, 0, 8);
bind(sock_fd, (struct sockaddr *)&my_addr, sizeof(struct sockeaddr));

参考:https://www.cnblogs.com/hnrainll/archive/2011/07/18/2109375.html

转载于:https://www.cnblogs.com/coolYuan/p/8350649.html

整理struct sockaddr和struct sockaddr_in相关推荐

  1. struct sockaddr与struct sockaddr_in ,struct sockaddr_un的区别和联系

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

  2. struct sockaddr和struct sockaddr_in区别

    struct sockaddr和struct sockaddr_in这两个结构体用来处理网络通信的地址. 一.sockaddr sockaddr在头文件#include <sys/socket. ...

  3. struct sockaddr和struct sockaddr_in的强制类型转换

    1. struct sockaddr {unsigned short sa_family;//地址类型char sa_data[14];//协议地址} 2. struct sockaddr_in {u ...

  4. struct sockaddr与struct sockaddr in struct sockaddr un的区别和联系

    在linux环境下,结构体struct sockaddr在/usr/include/linux/socket.h中定义,具体如下: typedef unsigned short sa_family_t ...

  5. 【C++】Winsock套接字编程,struct sockaddr、sockaddr_in,主机网络字节序

    前一篇关于windows平台下winsock套接字编程的相关api struct sockaddr与struct sockaddr_in 在bind函数,connect函数里提到了套接字编程网络地址信 ...

  6. struct ifconf和struct ifreq,获取网线插入状态

    struct ifreq 这个结构定义在include/net/if.h,用来配置ip地址,激活接口,配置MTU等接口信息的 struct ifconf 通常是用来保存所有接口信息的 应用 想要获取当 ...

  7. 获取网络接口信息——ioctl()函数与结构体struct ifreq、 struct ifconf

    http://blog.csdn.net/windeal3203/article/details/39320605 Linux 下 可以使用ioctl()函数 以及 结构体 struct ifreq ...

  8. struct和typedef struct

    原文:https://www.cnblogs.com/qyaizs/articles/2039101.html struct和typedef struct 分三块来讲述: 1 首先://注意在C和C+ ...

  9. 结构体struct timeval 和 struct timespec的定义

    结构体struct timeval 和 struct timespec的定义均在头文件<sys/time.h>中,具体定义如下: struct timeval {long tv_sec; ...

最新文章

  1. python画出的雷达图效果-PYTHON绘制雷达图代码实例
  2. .Net AppDomain详解(一)
  3. 关于数组首地址a、a+1、a[0]、a[0]+1、*a、*a、a+0的解析
  4. 一年代码功能点的创新性怎么写_技术创新管理--作业--答案
  5. 怎么删除python3.7注册表内容_python3操作注册表的方法(Url protocol)
  6. 第64节:Java中的Spring Boot 2.0简介笔记
  7. spring 注入 list和map及enum映射
  8. 基于android的个人理财软件 android stu_Android聊天软件开发(基于网易云IM即时通讯)——注册账号(二)...
  9. 从新一代华为全屋智能解决方案看智能家居的本质
  10. 多个android手机客户端通信,android中利用Socket实现手机客户端与PC端进行通信
  11. 用Python语言模型和LSTM做一个Drake饶舌歌词生成器!自己蒙了!
  12. 架构设计软件EA使用指南
  13. 2021年中国光谱分析仪器市场趋势报告、技术动态创新及2027年市场预测
  14. spring中读不到配置文件问题
  15. 社区折腾日志:基于python搭建个人微信/支付宝免签支付功能
  16. 随机信号处理笔记 - ING
  17. 《炬丰科技-半导体工艺》薄膜晶体管中的光刻技术
  18. BlackBerry 快捷键
  19. DJI mobile SDK学习
  20. 视频压缩工具如何使用?

热门文章

  1. L1-043 阅览室-PAT团体程序设计天梯赛GPLT
  2. java分桃子_Java经典编程题分桃子
  3. 可以看游资的app_大大游资软件下载
  4. springboot tomcat配置_Spring Boot项目如何同时支持HTTP和HTTPS协议
  5. Spring Cloud Zuul--服务网关
  6. tuxedo linux 安装
  7. RxSwift PriorityQueue 优先级队列的实现
  8. js设置radio 和checkbox 单选
  9. 关于Lua打包cocos2d项目
  10. PHP在微博优化中的“大显身手”