嵌入式学习33-网络通信

网络:
      数据传输,数据共享

1.网络协议模型:
    OSI协议模型
        应用层              实际发送的数据
        表示层              发送的数据是否加密
        会话层              是否建立会话连接
        传输层              数据传输的方式(数据报、流式)
        网络层              数据的路由(如何从一个局域网到达另一个局域网)        IP地址
        数据链路层        局域网下如何通信
        物理层              物理介质的连接

    TCP/IP协议模型   
        应用层              传输的数据
        传输层              传输的方式
        网络层              数据如何从一台主机到达另一台主机
        网络接口层          物理介质的连接

    应用层:
        HTTP    超文本传输协议
        HTTPS    加密

 
        FTP     文件传输协议
        TFTP    简单文本传输协议


        SMTP    邮件传输协议
        MQTT    
        TELNET  
        ..
    
    传输层:
        UDP     用户数据报协议
                特点:
                    1.实现机制简单
                    2.资源开销小
                    3.不安全不可靠

        TCP     传输控制协议
                特点:
                    1.实现机制复杂              3次握手 4次挥手
                    2.资源开销大
                    3.安全可靠

    网络层:
        IPv4

        IP地址:                                                                                                                                                           唯一标识网络中一台主机的标号
        IP地址:                                                                                                                                                             网络位 + 主机位                                                 192.168.   1.171
        子网掩码:                                                                                                                                                             用来标识IP地址的网络位主机位                  255,255,0,0                                                                                                                                        
                子网掩码是  的部分表示  IP地址  的  网络位
                子网掩码是  0  的部分表示  IP地址  的  主机位
        网段号:                                                                                                                                                            网络位不变,主机位全为0,  表示  网段号
        广播地址:                                                                                                                                                           网络位不变,主机位全为1,表示 广播地址

        IP地址类型:
        A类
            1.0.0.0 - 126.255.255.255
            子网掩码:                                                                                                                                                           255.0.0.0
                                                     管理超大规模网络
            10.0.0.0 - 10.255.255.255 

        B类
            128.0.0.0 - 191.255.255.255
            子网掩码:                                                                                                                                                           255.255.0.0 
                                                      管理大中规模型网络
            172.16.0.0 - 172.31.255.255

        C类
            192.0.0.0 - 223.255.255.255
            子网掩码:                                                                                                                                                           255.255.255.0
                                                       管理中小规模型网络 
            192.168.0.0 - 192.168.255.255

        D类
               224.0.0.0 - 239.0.0.0
                                                          用于组播

        E类
            240.0.0.0 - 255.255.255.255 
                                                           用于实验

2.UDP编程
    socket套接字编程:
    1.发端:
        socket 
        int socket(int domain, int type, int protocol);
        功能:
            创建一个用来  通信 文件描述符
        参数:
            domain:                                                                                                                                                           使用的协议族 AF_INET (IPv4协议族)
            type:  套接字类型
                SOCK_STREAM:                                                                                                                                                             流式    套接字
                SOCK_DGRAM:                                                                                                                                                            数据报   套接字
                      SOCK_RAW:                                                                                                                                                             原始     套接字
            protocol:协议
                         默认为0 
        返回值:
            成功  返回  文件描述符
            失败返回-1 

        sendto 
        ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,
                      const struct sockaddr *dest_addr, socklen_t addrlen);
        功能:
               利用  套接字  向  指定地址  发送 数据信息 
        参数:
            sockfd:                                                                                                                                                           套接字文件描述符
            buf:                                                                                                                                                              发送数据空间首地址
            len:                                                                                                                                                                发送数据的长度
            flags:                                                                                                                                                           属性默认为0 
            dest_addr:                                                                                                                                                           目的地址信息存放的空间首 地址
            addrlen:                                                                                                                                                           目的地址 的 长度
        
        struct sockaddr_in {
            sa_family_t    sin_family; /* address family: AF_INET */
            in_port_t      sin_port;   /* port in network byte order */
            struct in_addr sin_addr;   /* internet address */
        };

        /* Internet address. */
        struct in_addr {
            uint32_t       s_addr;     /* address in network byte order */
        };
                  
        返回值:
            成功  返回  实际发送字节数
            失败  返回-1 

        inet_addr:
        in_addr_t inet_addr(const char *cp);
        功能:  
            将 字符串 IP地址转换为 内存 中的IP地址 

        htons
        uint16_t htons(uint16_t hostshort);
        功能:
            将 本地字节序 转换为网络的  大端字节序
        
        close 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/722622.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Day22 Linux高级编程 --- Makefile

Makefile简介: 1.工程管理工具 2.指定目录下编写Makefile文件或者makefile 3.在目录下输入make 4.调用对应目录下的makefile文件 5.根据文件设定的编译规则来编译代码 Makefile语法: 1.格式: 要生成的文件:依赖的文件 生成方式 …

【STM32+OPENMV】二维云台颜色识别及追踪

一、准备工作 有关OPENMV最大色块追踪及与STM32通信内容,详情见【STM32HAL】与OpenMV通信 有关七针OLED屏显示内容,详情见【STM32HAL】七针OLED(SSD1306)配置(SPI版) 二、所用工具 1、芯片:STM32F407ZGT6 2、CUBEMX配置软件 3、KEIL5 4…

GDOI2024游记

Day0 中午一点钟从学校出发去东莞,大概坐了一个多小时车,两点半多到酒店。住的八方精选酒店(ljh说他们住九方精选酒店,乐),说的是景区酒店,但打开外窗,近处是简陋的阳台&#xff0c…

上位机图像处理和嵌入式模块部署(qmacvisual入门)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 虽然我们前面学习了很多的知识点,比如说在windows这边,用qt写界面,用opencv写图像处理代码;在linux…

PHP语言常见面试题:PHP中的数据类型有哪些?请举例说明。

在PHP中,有几种基本的数据类型,它们包括: 字符串(String):字符串是字符的序列,由零个或多个字符组成。在PHP中,字符串可以包含任何字符,包括字母、数字、空格、标点符号、…

[unity] xLua 热更新 【个人复习笔记/有不足之处欢迎斧正/侵删】

lua解析器 void Start(){//Lua解析器 能够让我们在Unity中执行Lua//一般情况下 保持它的唯一性LuaEnv env new LuaEnv();//执行Lua语言env.DoString("print(你好世界)");//执行一个Lua脚本 Lua知识点 :多脚本执行 require//默认寻找脚本的路径 是在 Res…

cuda python torch 虚拟环境配置

以下是Pytorch和CUDA对应的版本 以下是Pytorch和Python对应的版本 检查cuda与Python版本是否匹配 import torch print(torch.__version__) print(torch.cuda.is_available()) print(torch.empty(3,4,devicecuda))cuda 删除cuda conda uninstall cudatoolkit --forceconda u…

MyBatis三个经典问题

1. Mybatis的执行流程 MyBatis 是一个流行的 Java 持久化框架,提供了对象关系映射 (ORM) 和 SQL 映射的功能,使开发者能够更加方便地与数据库交互。MyBatis 的执行流程大致如下: 配置阶段: 加载配置文件: MyBatis 通过读取配置文件&#xff…

蓝桥杯2013年-幸运数(C语言-链表模拟)

题目描述 幸运数是波兰数学家乌拉姆命名的。它采用与生成素数类似的“筛法”生成 。 首先从1开始写出自然数1,2,3,4,5,6,.... 1 就是第一个幸运数。 我们从2这个数开始。把所有序号能被2整除的项删除,变为: 1 _ 3 _ 5 _ 7 _ 9 .... 把…

支付宝小程序模板开发,实现代小程序备案申请

大家好,我是小悟 支付宝小程序备案整体流程总共分为五个环节:备案信息填写、平台初审、工信部短信核验、通管局审核和备案成功。 服务商可以代小程序发起备案申请。在申请小程序备案之前,需要确保小程序基本信息已填写完成、小程序至少存在一…

Docker入门——安装部署(openEuler)、镜像加速

安装 1)依赖的基础环境 64 位CPU Linux kernel(内核) 3.10 Linux kernel cgroups and namespaces 我用的是openEuler,所以直接yum安装(推荐,因为二进制安装,docker命令中补全操作要另外安装软件) [rootlocalhost ~]# yum -y…

【AIGC调研系列】DevOps过程中依靠AIGC提升效率的具体实例

在DevOps过程中利用AIGC提升效率的具体实例包括: 智能排查流水线错误:云效工程师们与阿里云通义大模型合作,通过基于AIGC的工具辅助流水线错误排查,提高了DevOps流水线运行的效率和准确性[5]。自动化编程提高研发效率&#xff1a…

「经验」在博途中 是否可以在 LAD与STL 语言之间进行切换

用惯了STEP7,准确来说是SIMATIC Manager进行编程开发的同学,在转战TIA portal后,通常会经历一段“晦涩”的过度期,包括指令库的微小变动、工作界面的大改等等。 又比如:“在博途中,怎么快速切换LAD与STL语…

NVMe管理命令为何不用SGL?-2

在IO数据传输中,是否选择SGL可以根据自身场景的需要。SGL提供的是一种高效且灵活的方式来描述非连续的内存区域,这对于现代高性能存储系统至关重要,尤其是在处理大数据块或者随机小I/O操作时具有明显优势: 高效的数据传输&#xf…

课题学习(二十)----阅读《近钻头井斜动态测量重力加速度信号提取方法研究》论文

摘要:利用加速度计进行近钻头井斜动态测量时, 钻具的高速旋转、 井下强振动、强冲击环境给重力加速度测量带来极大干扰,如何从干扰噪声中有效提取重力加速度信号对于提高井斜角和工具面角的测量精度至关重要。 根据重力加速度径向和切向分量为…

【代码随想录】day1 数组

因为学计算机语言是属于半路出家,在接触数据结构之前,我只了解数据的类型,从没有了解过不同数据类型的存储方式。数组、链表等等因为不同的存储方式,展现出不同的优缺点,以适应不同的用途。 代码随想录是属于把饭喂到嘴…

Altium Designer 22 性能优化

目录 AD22 使用起来很卡,完全受不了,卡到我的快捷鼠标宏都无法使用,来试着优化一下它。 每点完一步,都需要点击应用,否则不下心关掉了会很难受 打开右上角齿轮进入设置,取消勾选这几个勾: 接…

java spring 03 启动细节

spring启动类ClassPathXmlApplicationContext,读取xml文件并且创建bean public ClassPathXmlApplicationContext(String[] configLocations, boolean refresh, Nullable ApplicationContext parent)throws BeansException {super(parent);setConfigLocations(confi…

oracle 表中的rowid会变动吗

oracle中访问select能够以最快的方式访问表中的一行的方法就是使用rowid,但是我们并不能使用rowid作为表主键。 在Oracle数据库中,ROWID是一个伪列,用于唯一标识表中的每一行记录。它起着几个关键的作用: 唯一标识:ROWID可以唯一…

python 亲测有效:无法连接互联网,离线部署python运行环境与安装包

**这里写目录标题** 安装包准备-在网络条件下下载所需要的第三方库安装包一、提取第三方库目录到requirements.txt二、批量下载requirements.txt的whl文件 安装包复制到无网络条件下,安装第三方库安装包**可能存在的问题 报错信息,欢迎私信,指…