sockaddr 和 sockaddr_in 的区别与联系

系统的学习网络编程,这篇就够了!(来收藏夹里吃灰) 主机字节序和网络字节序:在32位机器上,累加器一次能装载4个字节,这四个字节在内存中排列顺序将影响它被累加器装载成的整数的值大端字节序(网络字节序):一个整数的高位字节存储在内存的低地址处... 阅读详情

两个结构体如下所示:

sockaddr 保留了未定义的区域,sockaddr_in 则定义了具体的成员
一般用sockaddr_in进行地址的装入
大部分用到地址结构的函数则用sockaddr结构体,这是为了扩展性。
这样,函数就不用跟具体的地址结构耦合了.
不过毕竟是C,将sockaddr_in传给接收sockaddr的函数时,
就要做强制类型转换,这种转换成功的前提是,
结构体必须保持上一层结构体已定义成员的顺序,
sockaddr第一个成员是sa_family,所以sockaddr_in的第一个成员也一定是sa_family
还有,更进一步,定义新的sockaddr时,增加成员的总空间还可以超过char[14],
就是可以无限扩展的意思.
函数一样可以正常工作,这就是为什么一般函数当需要一个sockaddr地址结构时,还要求传入一个sockaddr的大小

示例:
struct sockaddr_in saServer;
bind( ListenSocket,(SOCKADDR*) &saServer, sizeof(saServer) );

将一个saServer传入时,强制转换成SOCKADDR* , 接着还要传入saServer的大小
即sockaddr_in的大小,而不是sockaddr的大小

sa_family定义了地址族,不同的地址族地址结构是不同的
所以sa_family成为一种地址类型标识
sockaddr_in地址的domain是AF_INET
可以猜想,所有接收sockaddr结构体的函数,
都先通过sa_family判断地址族从而确定地址结构体的实际类型
这就是C语言中的多态!

对话系统简介 《文本上的算法》学习笔记1、问答型1.1、基于语义分析的方法1.2、基于信息抽取的方法1.3、端对端的方法2、任务型2.1、生成式模型( Generative Model )2.2、判别式模型( Discrimitive Model )2.3、规则系统3、闲聊型3.1、规则方法3.2、生成模型3.3、检索方法 个人认为NLP领域最难的方向可以说是阅读理解与文本生成/摘要,而对话系统,尤其是闲聊常常... 阅读详情

相关推荐

从Blender舞步到夜空画卷:基于Pix飞控的无人机编队灯光秀全链路开发实践

本文详细介绍了基于Pixhawk飞控的无人机编队灯光秀全链路开发实践。从Blender三维动画设计、QGroundControl地面站二次开发与MAVLink通信桥接,到PX4飞控的OFFBOARD模式路径控制与LED灯光驱动实现,最后通过Gazebo仿真验证并完成真机组装与首飞。文章为无人机爱好者提供了一套完整的、从创意设计到夜空执行的开源解决方案,重点阐述了多机同步与灯光控制的核心技术挑战与应对策略。

zeta9的博客 585

sockaddr和sockaddr_in详解

struct sockaddr和struct sockaddr_in这两个结构体用来处理网络通信的地址。一、sockaddrsockaddr在头文件#include <sys/socket.h>中定义,sockaddr的缺陷是:sa_data把目标地址和端口信息混在一起了,如下:struct sockaddr { sa_family_t sin_family;//地址族    cha

爱橙子的OK绷的专栏 17万+

STM32CubeMX-电机控制2-电机相关配置部分

STM32CubeMX-电机霍尔传感器 写在前面的话:之前一直使用库函数,调程序时总会觉得是配置出现问题,要画一些时间去检查配置程序,所以目前转到了STM32CubeMX。写这些内容一方面是整理记录,因为是刚入门,所以难免出现错误,希望能得到大家指正;另一方面是因为自己一个人调试,走了很多弯路,写下来希望能给相同处境的人一些参考。 步骤一: 电机霍尔传感器接口 我目前使用的是STM32F4,电机的...

niker_co的博客 1万+

网络编程基础(3):什么是sockaddr和sockaddr_in?区别是什么?两者该如何使用,如何相互转换呢?

什么是sockaddr和sockaddr_in?区别是什么?两者该如何使用,如何相互转换呢?

shnhe的博客 2702

告别CANoe?手把手教你用Python+PCAN搭建汽车诊断脚本(附完整代码)

本文详细介绍了如何利用Python和PCAN硬件搭建高性价比的汽车诊断自动化方案,替代昂贵的CANoe工具。通过开源库python-can和udsoncan实现UDS诊断协议,涵盖硬件选择、环境配置、核心功能实现及性能优化,附完整代码示例,助力开发者快速构建诊断脚本。

weixin_42551227的博客 373

Unity 之如何使用Pico4u锚点功能实现一个世界锁GameRoot

摘要 空间锚点技术是混合现实(MR)应用的核心,能永久记录虚拟物体的空间位置。文章介绍了在Unity中使用Pico SDK实现空间锚点的完整流程:1)环境配置需安装XR模块和Pico SDK;2)关键操作包括启动空间感知、创建/删除/查询/更新锚点;3)提供了经典应用案例,通过GameRoot节点实现场景固定和锚点同步。源码展示了基于XR交互工具包的锚点抓取与位置更新实现,为MR开发提供了实用参考方案。

TxNet 972

socket编程——sockaddr_in结构体操作

sockaddr结构体 sockaddr的缺陷:struct sockaddr 是一个通用地址结构,这是为了统一地址结构的表示方法,统一接口函数,使不同的地址结构可以被bind() , connect() 等函数调用;sa_data把目标地址和端口信息混在一起了 struct sockaddr { unsigned short sa_family;   cha...

weixin_34261739的博客 507

UWB芯片DW3000之PDOA测向实现源码

本文详细介绍如何基于UWB芯片DW3000之PDOA测向的源码实现。

DT程序员的博客 2615

sockaddr和sockaddr_in的区别

写在最前:这两个结构体主要的区别就是我们(指操作者)使用sockaddr_in设置端口、IP地址以及地址属性等参数,而不是直接使用sockaddr结构体,因为这个结构体是操作系统内核调用的,对于程序员来说不应该是透明的。 所以一般的做法是我们设置好sockaddr_in结构体,然后将其显示转换为sockaddr struct sockaddr和struct sockaddr_in这两个结...

苞米地里捉小鸡的博客 846

​热电偶测温电路图(一)​

高精度热电偶测温电路图 此设计概括了提供传感器诊断所必需的抗混叠滤波器和偏置电阻器。此示例还提供了一种新颖的方式,即使用ADS1118上的板载温度传感器完成对系统的冷端补偿。对于热电偶线性化,此设计还提供了一种非常简单的、可以在大多数微控制器上实施的线性算法。 缺点就是太贵。 特性 测量K型热电偶温度 精度1°C 高精度/可重复性0.2°C 包含冷端补偿 包含软件算法 使用ADS111816位ADC(带PGA) 原理图/方框图 热电偶测温电路图(二) OP07构成的高稳定热电

zxm8513优快云博客 2万+

7、Python高光谱分析工具(PyHAT)简介

Python高光谱分析工具(PyHAT)是一个开源、跨平台的Python库及图形用户界面,用于行星光谱数据的可视化与分析。它支持多种高光谱传感器数据,如火星勘测轨道飞行器的CRISM、月船1号的M3以及SELENE Kaguya SP点光谱仪,提供预处理、衍生产品生成、统计学习和机器学习分析功能。PyHAT基于Pandas和NumPy构建,兼容Jupyter和QGIS环境,旨在解决现有光谱分析方法缺乏开源实现、难以探索性分析和算法分散的问题。其模块化架构涵盖数据输入/输出、通用光谱变换、测绘与点观测工具及高

aa123的博客 138

TCP/UDP中sockaddr和sockaddr_in的区别及用法

目录 一、先看两个结构体的定义 1.1sockaddr 1.2 sockaddr_in 二、sockaddr与sockaddr_in的相同点和区别 2.1 相同点 2.2 区别 三、使用方法 3.1 socket编程中sockaddr和sockaddr_in的强制转换 3.2 补充部分 struct sockaddr和struct sockaddr_in这两个结构体用来处理网络通信的地址。 在各种系统调用或者函数中,只要和网络地址打交道,就得用到这两个结构体。 网络中的地址包含3个方面.

qq_41687938的博客 4184

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

sockaddr_in , sockaddr , in_addr区别

sockaddr_in , sockaddr , in_addr区别struct   sockaddr   {                  unsigned   short   sa_family;                     char   sa_data[14];             };    上面是通用的socket地址,具体到Internet   so

jackychu的专栏 2万+

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

sockaddr与sockaddr_in的区别

本文转自:https://blog.youkuaiyun.com/will130/article/details/53326740/ struct sockaddr和struct sockaddr_in这两个结构体用来处理网络通信的地址。 一、sockaddr sockaddr在头文件#include <sys/socket.h>中定义,sockaddr的缺陷是:sa_data把目标地址和端...

Primeprime的专栏 598

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

sockaddr、sockaddr_in、sockaddr_in6的区别及转换

本文转自:https://blog.youkuaiyun.com/albertsh/article/details/80991684 前言 最近在学习网络相关的知识,虽然之前代码写了不少,但是长时间不写难免会忘记,简单地复习了一下IO多路复用的方式,对比了解了一下epoll模式和select模式的异同,不过写代码的时候发现,这个socket连接中有几个结构还是挺让人头大的,用着用着突然就强转成其他的类型了,...

Primeprime的专栏 5691

sockaddr 和 sockaddr_in的区别

初学者很容易对二者有困惑的感觉,下面来讲一下二者的区别。 sockaddr是在头文件 /usr/include/bits/socket.h 中定义的,如下:   [cpp] view plaincopyprint? struct sockaddr    {      __SOCKADDR_COMMON (sa_);    /* Common data: address

行人事,知天命 1006

SOCKADDR和SOCKADDR_IN的区别

二者的占用的内存大小是一致的,因此可以互相转化,从这个意义上说,他们并无区别。 sockaddr常用于bind、connect、recvfrom、sendto等函数的参数,指明地址信息。是一种通用的套接字地址。 而sockaddr_in 是internet环境下套接字的地址形式。所以在网络编程中我们会对sockaddr_in结构体进行操作。使用sockaddr_in来建立所需的信息,最

cuicansdii的博客 763

socket编程之sockaddr和sockaddr_in的区别

sockaddr和sockaddr_in的区别 struct sockaddr和struct sockaddr_in这两个结构体用来处理网络通信的地址。 在各种系统调用或者函数中,只要和网络地址打交道,就得用到这两个结构体。 网络中的地址包含3个方面的属性: 1 地址类型: ipv4还是ipv6 2 ip地址 3 端口 相应的,头文件有如下定义: include <netinet/in.h> struct sockaddr { unsigned short sa_family;

嵌入式技术 1564
上一篇: 调用strcpy等函数时出现的内存泄漏问题
下一篇: winsock2 bind函数的功能
wihing
博客等级 码龄19年 55粉丝 36原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值