sockaddr与sockaddr_in结构体区别 不同 详解
详解 区别 in 结构 不同
2023-09-14 09:06:15 时间
粉丝不过W
struct sockaddr 和 struct sockaddr_in 这两个结构体都是用来 处理网络通信的地址
/*
*此数据结构用做bind、connect、recvfrom、sendto等函数的参数,指明地址信息
*note:
* 目标地址和端口信息在一起
*/
#include <sys/socket.h>
struct sockaddr
{
//地址家族,一般“AF_xxx”的形式,通常使用AF_INET
unsigned short sa_family;
// 14字节协议地址,目标地址和端口信息
char sa_data[14];
}
#include <netinet/in.h>
struct sockaddr_in
{
short int sin_family; //协议族
unsigned short int sin_port; //端口号(使用网络字节顺序)
struct in_addr sin_addr; //IP地址
unsigned char sin_zero[8]; //sockaddr与sockaddr_in 保持大小相同而保留的空字节
};
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;
sockaddr_in和sockaddr是并列的结构,指向sockaddr_in的结构体的指针,同样可以 指向sockraddr的结构体,并代替它
struct sockaddr_in mysock;
bind(sockfd,(struct sockaddr *)&mysock,sizeof(struct sockaddr); /* bind的时候进行转化 */
相关文章
- 详解PHP中include和require的区别
- MongoDB数据库基础 装 基本操作详解【服务端启动,客户端连接,CRUD操作】
- postgresql 物理备份 tar + pigz详解程序员
- for循环、while循环区别详解程序员
- sql中exists替换in的区别详解数据库
- oracle oradebug analyze 的日常使用详解数据库
- synchronized 和 ReentrantLock区别详解编程语言
- java8 新操作符::做方法引用详解编程语言
- print与printf的区别详解编程语言
- multipart/form-data和application/x-www-form-urlencoded的区别详解编程语言
- ServletRequest HttpServletRequest 请求方法 获取请求参数 请求转发 请求包含 请求转发与重定向区别 获取请求头字段详解编程语言
- C# RSA 分段加解密详解编程语言
- 的区别MySQL中ON与IN的区别探讨(mysql中on与in)
- HTML中,按钮button与submit区别是什么详解编程语言
- JavaScript 面向对象与原型详解编程语言
- FICO增强 – 检查/校验 BOOL_DATA参考类型确定详解编程语言
- 区别CALL SCREEN/SET SCREEN/LEAVE TO SCREEN详解编程语言
- Smart form与Adobe form 如何通过转换后的function名字获得form名字详解编程语言
- python作业之购物车详解编程语言
- 查询MySQL中的IN字符串查询详解(mysql字符串in)
- MySQL中IN操作最大长度详解(mysql中in最大长度)
- MySQL中使用EXEC命令的方法详解(mysql中 exec)
- Oracle数据库中的IN关键字深度剖析(oracle中in的详解)
- js闭包的用途详解