c语言sockaddr_in结构体,转:sockaddr与sockaddr_in结构体详细讲解
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
c语言sockaddr_in结构体,转:sockaddr与sockaddr_in结构体详细讲解相关推荐
- linux下C语言套接字编程sockaddr和sockaddr_in的区别
tcp建立后,我想linux的服务端可以为每个连接的ip地址分配编号,方便进行每个客户端进行数据交互.所以我要知道每个连接的ip地址. struct sockaddr和struct sockaddr_ ...
- (摘录)sockaddr与sockaddr_in,sockaddr_un结构体详细讲解
struct sockaddr { unsigned short sa_family; /* address family, AF_xxx */ char sa_data[14]; ...
- sockaddr,sockaddr_in,sockaddr_un结构体详细讲解
struct sockaddr {unsigned short sa_family; /* address family, AF_xxx */char sa_data[14]; /* 14 bytes ...
- sockaddr与sockaddr_in,sockaddr_un结构体详解
struct sockaddr { unsigned short sa_family; /* address family, AF_xxx */ char sa_data[14]; ...
- Linux网络编程之sockaddr与sockaddr_in,sockaddr_un结构体详细讲解
Linux网络编程之sockaddr与sockaddr_in,sockaddr_un结构体详细讲解 (1)sockaddr struct sockaddr { unsigned short sa_ ...
- sockaddr与sockaddr_in结构体简介
struct sockaddr {unsigned short sa_family; /* address family, AF_xxx */ char sa_data[14]; /* 14 byte ...
- 结构体sockaddr、sockaddr_in、sockaddr_in6之间的区别和联系
本文转自https://blog.csdn.net/albertsh/article/details/80991684,简单易懂,赞. 前言 最近在学习网络相关的知识,虽然之前代码写了不少,但是长时间 ...
- C语言Socket编程为什么要将sockaddr_in强制转换成sockaddr?
在阅读尹圣雨<TCP/IP网络编程>(C语言示例)的时候,看到将sockaddr_in类型的struct的指针强制转换成了sockaddr类型的指针. 比如hello_client.c: ...
- linux网络编程之地址结构sockaddr和sockaddr_in的区别
1.介绍sockaddr 结构体struct sockaddr在/usr/include/linux/socket.h中定义 struct sockaddr {unsigned short sa_fa ...
最新文章
- svn的安装以及post-commit实时更新网站
- 读书笔记-《增长黑客》-好产品是增长的根本
- mysql执行底层_天天写order by,你知道Mysql底层如何执行吗?
- Redis为什么是单线程还这么快?
- 对python编程做介绍-python002-编程语言介绍
- 最大乘积(记忆化搜索)
- openGauss索引详解
- 一次完整的数据分析实战!仅用4步,效率吊打Excel和Python
- Spring beans配置方案(二) 学习笔记
- Ubuntu下mysql修改字符集为utf8
- 计算机硬盘的常用分区工具,常用的几款分区合并工具推荐,合理使用电脑硬盘...
- linux搭建天地伟业easy7,天地伟业easy7客户端
- 中国30家值得信赖的大数据采集公司汇总!
- 分享下nirsoft提供的注册表工具
- codelite交叉编译动态库学习记录
- 学计算机轻松的表情包,轻松的表情包
- python中如何解决类互相调用问题_两个.py之间类的相互调用问题
- 【实习小tip】多层dialog弹窗遮罩问题、elementUI的form表单组件的select框在只读的情况下没办法拿到传来的数据、从弹窗子组件获取数据后需要刷新页面
- shell脚本一键安装jdk(三台)
- 新一轮调控将把中国房地产市场带向哪
热门文章
- [转] OpenCV 文字绘制cv::putText详解
- c语言调用system返回值,在C语言中获取用system函数调用shell的返回值
- ROS2——创建ROS2工作空间
- codeforces 1783 C. Yet Another Tournament
- 明日之后手游安卓版今日10点上线!来啊,一起来撸狗啊
- Au cs6怎样才能导入和导出m4a或者就是aac格式的文件呢?
- Word2016安装Mathtype后在选项卡显示
- 【Java】中int 和 Integer 与 new Integer() 的区别,int 可以使用 == 来对比两个变量是否相等,而 Integer 一定要使用 equals 来比较两个变量值是否相等
- pdf 文件格式及对象模型
- 掌财社寒山:恒指期货k线图口诀是什么?