嵌入式day32

news/2024/9/18 14:57:11/ 标签: 服务器, 网络, 运维, linux
recvfrom

参数:

sockfd //socket的fd

buf //保存数据的一块空间的地址

len //这块空间的大小

flags //0 默认的接收方式 --- 阻塞方式

src_addr //用来保存发送方的地址信息

addrlen //表示发送方实际的地址信息大小

返回值:

成功 返回接收到的字节数

失败 返回-1

服务器端 --- 把自己的地址公布出去

bind

如果该函数在服务器端调用,则表示将参数1相关的文件描述符文件与参数2指定的接口地址关联,用于从该接口接受数据。

如果该函数在客户端调用,则表示要将数据从参数1所在的描述符中取出并从参数2所在的接口设备上发送出去。(客户端可省略,由默认接口发送数据)

sockfd //之前通过socket函数创建的文件描述符,套接字id

addr //物理接口的结构体指针,表示该接口的信息

返回值:

成功 返回0

失败 返回-1

eg:

客户端从键盘获得数据发给服务器服务器打印并回发

客户端:

socket

//fgets

sendto

recvfrom

printf

服务器端:

socket

bind

recvfrom //保存了客户端的地址 srcaddr

sprintf

sendto //srcaddr

基于tcp

tcp 客户端:

//建立连接

socket

bind //可选

connect

//通信过程

read

write

close

tcp服务器

//建立连接

socket

bind

listen //监听客户端的连接请求

accept //这一步完成后 连接就建立好了,之后就可以收发数据

//通信过程

read

write

close

tcp如何建立连接?

tcp三次握手

断开连接

tcp四次回收

tcp客户端:

connect

该函数固定有客户端使用,表示从当前主机向目标主机发起链接请求

参数:

sockfd //本地socket创建的套接字id

addr //远程目标主机的地址信息

addelen //参数addr的长度

返回值:

成功 返回0

失败 返回-1

tcp服务器端:

listen

反应监听那个套接字并且建立成功之后返回一个新的套接字

参数:

sockfd //当前的套接字

backlog //同时可以监听的个数

返回值:

成功 返回0

失败 返回-1

listen会标记下一个被动的socket(这个socket将会被用来接受到来的接受请求)

注意:

其有两个socket

1、监听的socket

2、处理建立连接的socket(后续进行操作的socket)

accept

从监听套接字sockfd的挂起连接队列中提取第一个连接请求,创建一个新的文件描述符,该文件描述符引用这个新套接字。新创建的套接字不处于监听状态。原始套接字sockfd不受此调用的影响

--------------------------------------

嵌入式学习第三十二天,今天讲了UDP剩余部分的内容,了解了两个进程间的通信。还学习了TCP的相关知识,其中包括TCP客户端和服务端的相关知识,以及关于TCP函数的认识和使用。后面继续加油。


http://www.ppmy.cn/news/1516339.html

相关文章

RabbitMQ(面试篇)

目录 MQ是什么 MQ的优点 消息队列有什么缺点 什么是RabbitMQ? rabbitMQ的使用常见 RabbitMQ基本概念 大家一起加油 !!! MQ是什么 MQ是消息队列,是软件和软件之间同行的中间件产品 MQ的优点 异步处理&#xff0c…

鸿蒙开发5.0【基于CameraKit,通过avrecorder进行录像】

1 场景描述 录像是相机应用的最重要功能之一,录像是循环帧的捕获。本文通过CameraKit自定义相机并通过avrecorder进行录像。 2 效果图 3 自定义相机录像流程图 4 方案描述 4.1 整体描述: 总体可分为:1、相机输入,2、同时输出预览流录像流…

电商云账户:空中分账场景的优势探索

在当今这个数字化时代,电子商务已成为推动全球经济发展的重要力量。随着交易量的激增和交易模式的多样化,如何高效、安全地管理这些交易资金成为了电商平台和商家面临的重要挑战。空中分账,这一基于电商云账户的创新解决方案,正以…

SQLite简记

文章目录 概述SQLite 的特点轻量级与嵌入式设计文件系统存储无需服务器进程其他SQLite 的架构使用 SQLite安装 SQLite配置和维护 SQLite创建数据库文件FTS(全文搜索)JSON 支持外部函数扩展SQL命令FAQ为什么在嵌入式系统和移动设备中喜欢使用 SQLite概述 SQLite 是一种轻量级…

UniApp与HTML5的区别及应用场景分析

uniapp是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、Web(响应式)、以及各种小程序(微信/支付宝/百度/头条/QQ/钉钉/淘宝)、快应用等多个平台。 HTML5是构建Web内容…

ES6中解构的使用

一、提取几个属性,构造一个新的对象 在JavaScript中,你可以使用对象解构(Object Destructuring)来提取一个对象中的几个属性,并构造一个新的对象。下面是一个示例: 在这个例子中,name和email属性…

5. HashMap的工作原理是什么?如何处理哈希碰撞?

​​​​HashMap是Java集合框架中的一个用于存储键值对的集合。它基于哈希表(Hashtable)实现,允许以常数时间复杂度(O(1))进行插入、删除和查找操作。以下是HashMap的工作原理和关键概念: 哈希函数: 当你将…

Kubernetes中etcd备份与恢复

在Kubernetes (K8s) 中,etcd 是一个分布式键值存储系统,存储了整个集群的配置和状态数据。由于etcd在K8s集群中的核心作用,定期备份和有效恢复etcd数据对于维护集群的高可用性和数据完整性至关重要。 一、etcd概述 1.1 etcd的作用 etcd是一…

环境问题处理:Python写工具,转换excel内容合并到xml中(openpyxllxml)

问题描述 提示报错,但是没有像java代码的解决方案推荐。 Note:PycharmProjects\项目名\venv\Scripts 创建项目时自带的脚本,也包含python.exe 查看python文件有输出路径,使用python也能打开python3.8,但是无法查找pyt…

前端学习Day34

Day34:P160-P167 学习笔记: 1.对象解构: 对象解构是将对象属性和方法快速批量赋值给一系列变量的简洁语法 基本语法: .赋值运算符左侧的0用于批量声明变量,右侧对象的属性值将被赋值给左侧的变量 .对象属性的值将被赋值给与属性名相同的变量 .注意…

C和C++中数组的不同

本文选自公众号文章: https://mp.weixin.qq.com/s/xyUMWTyEu7-Uws8Zfxifpg (1)在C99标准中引入了可变长度数组 (Variable-Length Arrays, VLA) 的概念。可变长度数组允许在运行时确定数组的大小,这使得数组的大小可以在函数调用时动态决定。例如&#…

Linux核心命令入门

Linux常用命令 文件管理文件目录管理文件查看编辑 系统管理网络管理hostnamehost/nslookuptraceroutenetstat列出所有端口 (包括监听和未监听的)列出所有处于监听状态的 Sockets显示每个协议的统计信息 硬件管理df(Disk Free)du(Disk Usage&a…

【Pyhthon读取 PDF文件表格 ,转为 CSV/TSV/JSON文件】

tabula-py tabula-py 是一个将 PDF 表格转换为 pandas DataFrame 的工具。 tabula-py 是 tabula-java 的包装器,需要您的机器上有 java。 tabula-py 还允许您将 PDF 中的表格转换为 CSV/TSV 文件。 tabula-py 的 PDF 提取准确度与 tabula-java 或 tabula app 相…

【AI绘画】Midjourney前置/imagine与单图指令详解

文章目录 💯Midjourney前置指令/imagine什么是前置指令?/imaginepromptUpscale(放大)Variations(变化)🔄(重新生成一组图片) 💯单张图片指令Upscale (细节优化)Vary(变体…

简单步骤获取IP地址SSL 证书

在网络安全中,SSL证书在保护用户浏览器和Web服务器之间交换的敏感信息方面发挥着至关重要的作用。 但是,如果您不仅想保护域名,还想保护特定的IP地址,该怎么办?您可以为IP地址获取SSL证书吗? 简短的回答是…

Java Leetcode每日一题:DFS

解法1:深度优先搜索(DFS) 深度优先搜索的做法非常直观。根据给定的员工编号找到员工,从该员工开始遍历,对于每个员工,将其重要性加到总和中,然后对该员工的每个直系下属继续遍历,直到…

一看就会的Mysql 集群技术

目录 一、Mysql介绍 1.1什么是MySQL 1.2MySQL的优势 1.3MySQL的常用语句 二、MySQL源码安装 三、实验练习 3.1MySQL部署 实验环境 实验步骤 1.创建用户,数据目录,更改权限 2.修改文件 3.初始化,会生成一个密码,将其保…

java 二级列表 stream流实现

效果&#xff1a; 表数据的样子 代码&#xff1a; public Result secondaryList() {List<MachineryType> machineryTypes machineryTypeMapper.selectList(new QueryWrapper<MachineryType>().orderByAsc("pid"));// 创建父子关系Map<Integer, Mach…

“Ruby宝石匣:解锁流行插件系统的奥秘“

标题&#xff1a;“Ruby宝石匣&#xff1a;解锁流行插件系统的奥秘” 引言 Ruby&#xff0c;作为一种灵活且富有表现力的编程语言&#xff0c;其强大的插件系统是其成功的关键因素之一。从RubyGems到各种Rails插件&#xff0c;Ruby的插件生态系统为开发者提供了丰富的资源和工…

Git学习笔记(最终篇)

文章目录 远程仓库一. 配置远程连接二. 添加远程仓库推送本地仓库内容到远程仓库 三. 推送步骤四. 远程库克隆五. 创建与合并分支1. 创建新分支2. 切换分支3. 创建并立即切换到该分支4. 合并分支 六. 处理冲突七. 分支管理策略八. bug分支九. 多人协作十. 推送分支十一. 抓取分…