【linux网络编程】套接字编程API详细介绍
在C语言中,套接字(Socket)编程主要用于网络通信,尤其是在基于TCP/IP协议的应用程序开发中。常用的套接字编程API主要基于Berkeley Sockets(伯克利套接字)接口,这些函数通常在<sys/socket.h>
和<netinet/in.h>
头文件中定义。以下是对常见套接字API的详细讲解,包括函数功能、参数、返回值、涉及的结构体及其成员的含义。
1. socket()
功能
创建新的套接字。
函数原型
int socket(int domain, int type, int protocol);
参数
domain
: 指定通信协议族(协议域)。- 类型:
int
- 常见值:
AF_INET
(IPv4协议)AF_INET6
(IPv6协议)AF_UNIX
(本地通信)
- 含义: 定义套接字的地址格式和通信范围。
- 类型:
type
: 指定套接字类型。- 类型:
int
- 常见值:
SOCK_STREAM
(面向连接的TCP流)SOCK_DGRAM
(无连接的UDP数据报)SOCK_RAW
(原始套接字)
- 含义: 定义通信的语义。
- 类型:
protocol
: 指定具体协议。- 类型:
int
- 常见值:
- 通常为
0
(表示由domain
和type
自动选择默认协议,如TCP或UDP) - 特殊值(如
IPPROTO_TCP
、IPPROTO_UDP
)用于显式指定协议。
- 通常为
- 含义: 细化协议选择。
- 类型:
返回值
- 类型:
int
- 含义:
- 成功: 返回套接字文件描述符(非负整数)。
- 失败: 返回
-1
,并设置errno
表示错误。
相关结构体
无直接结构体参数。
2. bind()
功能
将套接字绑定到特定的地址和端口。
函数原型
int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
参数
sockfd
: 要绑定的套接字文件描述符。- 类型:
int
- 含义: 由
socket()
创建的套接字。
- 类型:
addr
: 指向地址结构体的指针。- 类型:
const struct sockaddr *
- 含义: 指定绑定的地址和端口。
- 类型:
addrlen
: 地址结构体的大小。- 类型:
socklen_t
(通常是unsigned int
) - 含义:
addr
指向的结构体长度。
- 类型:
返回值
- 类型:
int
- 含义:
- 成功: 返回
0
。 - 失败: 返回
-1
,并设置errno
。
- 成功: 返回
相关结构体
struct sockaddr
- 定义:
struct sockaddr {sa_family_t sa_family; // 地址族char sa_data[14]; // 地址数据(具体含义依赖地址族) };
- 成员:
sa_family
: 地址族(如AF_INET
)。- 类型:
sa_family_t
(通常是unsigned short
) - 含义: 指定地址类型。
- 类型:
sa_data
: 地址数据的字节数组。- 类型:
char[14]
- 含义: 存储具体地址信息,但通常不直接使用。
- 类型:
- 定义:
- 实际常用:
struct sockaddr_in
(针对IPv4)- 定义:
struct sockaddr_in {sa_family_t sin_family; // 地址族in_port_t sin_port; // 端口号struct in_addr sin_addr; // IP地址unsigned char sin_zero[8]; // 填充字节 };
- 成员:
sin_family
: 地址族。- 类型:
sa_family_t
- 含义: 通常为
AF_INET
。
- 类型:
sin_port
: 端口号。- 类型:
in_port_t
(通常是uint16_t
) - 含义: 网络字节序的端口号(如
htons(8080)
)。
- 类型:
sin_addr
: IP地址。- 类型:
struct in_addr
- 定义:
struct in_addr {in_addr_t s_addr; // IPv4地址(32位) };
- 成员:
s_addr
: IPv4地址。- 类型:
in_addr_t
(通常是uint32_t
) - 含义: 网络字节序的IP地址(如
inet_addr("127.0.0.1")
)。
- 类型:
- 类型:
sin_zero
: 填充字节。- 类型:
unsigned char[8]
- 含义: 用于对齐,通常置为
0
。
- 类型:
- 定义:
3. listen()
功能
将套接字设置为监听状态,用于接受客户端连接(仅限TCP)。
函数原型
int listen(int sockfd, int backlog);
参数
sockfd
: 要监听的套接字文件描述符。- 类型:
int
- 含义: 已绑定的服务器套接字。
- 类型:
backlog
: 等待连接队列的最大长度。- 类型:
int
- 含义: 指定未完成连接的最大排队数(如
5
或10
)。
- 类型:
返回值
- 类型:
int
- 含义:
- 成功: 返回
0
。 - 失败: 返回
-1
,并设置errno
。
- 成功: 返回
相关结构体
无直接结构体参数。
4. accept()
功能
接受客户端连接请求,返回新的套接字用于通信(仅限TCP)。
函数原型
int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
参数
sockfd
: 监听的套接字文件描述符。- 类型:
int
- 含义: 已调用
listen()
的服务器套接字。
- 类型:
addr
: 客户端地址信息。- 类型:
struct sockaddr *
- 含义: 用于存储连接的客户端地址(通常转换为
struct sockaddr_in
)。
- 类型:
addrlen
: 地址结构体的长度。- 类型:
socklen_t *
- 含义: 传入时为
addr
的大小,函数返回时为实际地址长度。
- 类型:
返回值
- 类型:
int
- 含义:
- 成功: 返回新的套接字文件描述符,用于与客户端通信。
- 失败: 返回
-1
,并设置errno
。
相关结构体
- 同
bind()
中的struct sockaddr
和struct sockaddr_in
。
5. connect()
功能
发起与服务器的连接(用于客户端)。
函数原型
int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
参数
sockfd
: 客户端套接字文件描述符。- 类型:
int
- 含义: 由
socket()
创建的套接字。
- 类型:
addr
: 目标服务器地址。- 类型:
const struct sockaddr *
- 含义: 指定服务器的地址和端口。
- 类型:
addrlen
: 地址结构体的长度。- 类型:
socklen_t
- 含义:
addr
的大小。
- 类型:
返回值
- 类型:
int
- 含义:
- 成功: 返回
0
。 - 失败: 返回
-1
,并设置errno
。
- 成功: 返回
相关结构体
- 同
bind()
中的struct sockaddr
和struct sockaddr_in
。
6. send()
和 recv()
功能
send()
: 发送数据。recv()
: 接收数据。
函数原型
ssize_t send(int sockfd, const void *buf, size_t len, int flags);
ssize_t recv(int sockfd, void *buf, size_t len, int flags);
参数
sockfd
: 套接字文件描述符。- 类型:
int
- 含义: 已连接的套接字。
- 类型:
buf
: 数据缓冲区。- 类型:
const void *
(send
)或void *
(recv
) - 含义: 发送或接收的数据存储位置。
- 类型:
len
: 数据长度。- 类型:
size_t
- 含义: 要发送或接收的字节数。
- 类型:
flags
: 操作标志。- 类型:
int
- 常见值:
0
(默认行为)MSG_DONTWAIT
(非阻塞)
- 含义: 修改发送/接收行为。
- 类型:
返回值
- 类型:
ssize_t
- 含义:
- 成功: 返回实际发送/接收的字节数。
- 失败: 返回
-1
,并设置errno
。
相关结构体
无直接结构体参数。
7. close()
功能
关闭套接字。
函数原型
int close(int sockfd);
参数
sockfd
: 要关闭的套接字文件描述符。- 类型:
int
- 含义: 由
socket()
或accept()
返回的描述符。
- 类型:
返回值
- 类型:
int
- 含义:
- 成功: 返回
0
。 - 失败: 返回
-1
,并设置errno
。
- 成功: 返回
相关结构体
无直接结构体参数。
总结
以下是常用套接字API的快速参考表:
函数 | 功能 | 返回值类型 | 主要结构体 |
---|---|---|---|
socket() | 创建套接字 | int | 无 |
bind() | 绑定地址 | int | sockaddr , sockaddr_in |
listen() | 开始监听 | int | 无 |
accept() | 接受连接 | int | sockaddr , sockaddr_in |
connect() | 发起连接 | int | sockaddr , sockaddr_in |
send() | 发送数据 | ssize_t | 无 |
recv() | 接收数据 | ssize_t | 无 |
close() | 关闭套接字 | int | 无 |
这些API是C语言网络编程的核心,配合结构体(如struct sockaddr_in
)使用,可以实现基本的客户端-服务器通信。需要注意网络字节序(htons
, ntohs
, htonl
, ntohl
)和错误处理(errno
)的使用。
相关文章:
【linux网络编程】套接字编程API详细介绍
在C语言中,套接字(Socket)编程主要用于网络通信,尤其是在基于TCP/IP协议的应用程序开发中。常用的套接字编程API主要基于Berkeley Sockets(伯克利套接字)接口,这些函数通常在<sys/socket.h&g…...
杂项知识笔记搜集
1.pygame pygame可以画出来图形界面,pygame Python仓库 PyGame游戏编程_游戏程序设计csdn-CSDN博客 2.V4L2库 V4L2是Linux上的Camera采集器的框架 Video for Linux ,是从Linux2.1版本开始支持的。HDMI视频采集卡采集到的视频通过USB3.0输出࿰…...
模型微调——模型性能提升方法及注意事项(自用)
名词补充 人为为训练数据标注的标签称为黄金标准或真实值,这个过程一定程度上保证训练的准确性,但是其人工标注的成本和时间很高,并且标注的标签受人的主观因素影响。 导致模型性能不佳的因素和解决办法 ①不同类别的数据不平衡:统…...
RabbitMQ之旅(1)
相信自己,终会成功 目录 主流MQ产品 1.kafaka 2.RocketMQ 3.RabbitMQ 在xshell上安装RabbitMQ RabbitMQ七种工作模式 1.简单模式 编辑 2.工作队列模式 3.发布/订阅模式 4.路由模式 5.通配符模式 6.RPC模式 AMQP.BasicProperties 设置消息属性的类 7.发布确认模…...
TCP7680端口是什么服务
WAF上看到有好多tcp7680端口的访问信息 于是上网搜索了一下,确认TCP7680端口是Windows系统更新“传递优化”功能的服务端口,个人理解应该是Windows利用这个TCP7680端口,直接从内网已经具备更新包的主机上共享下载该升级包,无需从微…...
跟着 Lua 5.1 官方参考文档学习 Lua (11)
文章目录 5.4.1 – PatternsCharacter Class:Pattern Item:Pattern:Captures: string.find (s, pattern [, init [, plain]])例子:string.find 的简单使用 string.match (s, pattern [, init])string.gmatch (s, pattern)string.gsub (s, pattern, repl [, n])例子&…...
<script setup>和export default { setup() { ... } }区别
在 Vue 3 组合式 API(Composition API)中,<script setup> 和 export default setup() {} 都用于定义组件的逻辑,但它们有一些重要的区别: 1️⃣ <script setup>(推荐) ✅ 更简洁、…...
leetcode hot100--动态规划【五步总纲】
五步: 1.dp数组以及下标定义 dp[i] 2.递推公式 dp[n]dp[n-1]dp[n-2] 3.dp数组如何初始化 注意:判断边界条件,n0dp[1]就不存在【斐波那契】 4.遍历顺序 for循环顺序 5.打印数组【debug】 第一题:斐波那契数列 首先回顾了…...
RtlLookupAtomInAtomTable函数分析之RtlpAtomMapAtomToHandleEntry函数的作用是验证其正确性
第一部分: NTSTATUS RtlLookupAtomInAtomTable( IN PVOID AtomTableHandle, IN PWSTR AtomName, OUT PRTL_ATOM Atom OPTIONAL ) { NTSTATUS Status; PRTL_ATOM_TABLE p (PRTL_ATOM_TABLE)AtomTableHandle; PRTL_ATOM_TABLE_ENTRY a; …...
【从零开始学习计算机科学】硬件设计与FPGA原理
硬件设计 硬件设计流程 在设计硬件电路之前,首先要把大的框架和架构要搞清楚,这要求我们搞清楚要实现什么功能,然后找找有否能实现同样或相似功能的参考电路板(要懂得尽量利用他人的成果,越是有经验的工程师越会懂得借鉴他人的成果)。如果你找到了的参考设计,最好还是…...
todo: 使用融云imserve做登录(android)
使用融云做登录注册思路 注册界面需要name, email, password考虑到融云注册用户的post格式 POST http://api.rong-api.com/user/getToken.json?userId1690544550qqcom&nameIronman这里的userId可以使用用户的email,但是要截断和 . 符号,即1690544…...
从0开始的操作系统手搓教程23:构建输入子系统——实现键盘驱动1——热身驱动
目录 所以,键盘是如何工作的 说一说我们的8042 输出缓冲区寄存器 状态寄存器 控制寄存器 动手! 注册中断 简单整个键盘驱动 Reference ScanCode Table 我们下一步就是准备进一步完善我们系统的交互性。基于这个,我们想到的第一个可以…...
Azure云生态系统详解:核心服务、混合架构与云原生概念
核心服务:深入掌握Azure SQL Database、Azure Database for PostgreSQL、Azure Database for MySQL的架构、备份恢复、高可用性配置(如Geo-Replication、自动故障转移组、异地冗余备份)。混合架构:熟悉Azure Arc(管理混…...
Unity Dots
文章目录 什么是DotsDOTS的优势ECS(实体组件系统)Job System作业系统Burst编译器最后 什么是Dots DOTS(Data-Oriented Technology Stack)是Unity推出的一种用于开发高性能游戏和应用的数据导向技术栈,包含三大核心组件…...
SAP DOI EXCEL宏的使用
OAOR里上传EXCEL模版 屏幕初始化PBO创建DOI EXCEL对象,并填充EXCEL内容 *&---------------------------------------------------------------------* *& Module INIT_DOI_DISPLAY_9100 OUTPUT *&--------------------------------------------…...
VSTO(C#)Excel开发3:Range对象 处理列宽和行高
初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 源码指引:github源…...
单链表基本操作的实现与解析(补充)
目录 一、引言 二、代码实现 遍历考虑情况 三、操作解析 查找操作(sltfind函数) 前插操作(sltinsert函数) 后插操作(sltinsertafter函数) 前删操作(slterase函数) 后删操作&…...
电子学会—2024年月6青少年软件编程(图形化)四级等级考试真题——魔法门
魔法门 1.准备工作 (1)保留默认角色小猫和白色背景; (2)添加角色Home Button,复制9个造型,在每个造型上分别加上数字1到9,如下图所示; 2.功能实现 (1)程序开始,依次克隆出五个Home Button,克隆体之间的间距为90; …...
《加快应急机器人发展的指导意见》中智能化升级的思考——传统应急设备智能化升级路径与落地实践
感谢阅读本次内容分享,下面我将解读分析《加快应急机器人发展的指导意见》,喜欢的点赞支持一下呗~(日更真的很辛苦~),欢迎评论区留言讨论,你们的发言我都会看到~ 《加快应急机器人发展的指导意见》中智能化升级的思考——传统应急…...
Git系列之git tag和ReleaseMilestone
以下是关于 Git Tag、Release 和 Milestone 的深度融合内容,并补充了关于 Git Tag 的所有命令、详细解释和指令实例,条理清晰,结合实际使用场景和案例。 1. Git Tag 1.1 定义 • Tag 是 Git 中用于标记特定提交(commit…...
【每日学点HarmonyOS Next知识】Web上传文件、监听上下左右区域连续点击、折叠悬停、字符串相关、播放沙盒视频
1、HarmonyOS APP内h5原生webview input[typefile]无法唤醒手机上传? 文件上传要使用对应的picker https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/web-file-upload-V5 Web组件支持前端页面选择文件上传功能,应用开发者可以使用on…...
解决电脑问题(3)——显示器问题
当电脑显示器出现问题时,可以根据不同的故障现象采取相应的解决方法,以下是一些常见的情况及解决措施: 屏幕无显示 检查连接:首先检查显示器与电脑主机之间的视频连接线是否插好,确保两端的接口都牢固连接,…...
AArch64架构及其编译器
—1.关于AArch64架构 AArch64是ARMv8-A架构的64位执行状态,支持高性能计算和大内存地址空间。它广泛应用于现代处理器,如苹果的A系列芯片、高通的Snapdragon系列,以及服务器和嵌入式设备。 • 编译器:可以使用GCC、Clang等编译器编…...
免费送源码:Java+springboot+MySQL 房屋租赁系统小程序的设计与实现 计算机毕业设计原创定制
目 录 摘要 1 1 绪论 1 1.1选题意义 1 1.2开发现状 1 1.3springboot框架介绍 1 1.4论文结构与章节安排 1 2 房屋租赁系统小程序系统分析 3 2.1 可行性分析 3 2.1.1 技术可行性分析 3 2.1.2 经济可行性分析 3 2.1.3 法律可行性分析 3 2.2 系统功能分析 3 2.2.1 功…...
前端数据模拟 Mock.js 学习笔记
mock.js介绍 Mock.js是一款前端开发中拦截Ajax请求再生成随机数据响应的工具,可以用来模拟服务器响应 优点是:非常方便简单,无侵入性,基本覆盖常用的接口数据类型支持生成随机的文本、数字、布尔值、日期、邮箱、链接、图片、颜…...
【Linux内核系列】:深入解析输出以及输入重定向
🔥 本文专栏:Linux 🌸作者主页:努力努力再努力wz ★★★ 本文前置知识: 文件系统以及文件系统调用接口 用c语言简单实现一个shell外壳程序 内容回顾 那么在此前的学习中,我们对于Linux的文件系统已经有了…...
Adam 优化器与动量法:二阶矩与 ODE 的联系
Adam 优化器与动量法:二阶矩与 ODE 的联系 作为深度学习研究者,你一定对 Adam(Adaptive Moment Estimation)优化器非常熟悉。它因自适应学习率和高效率而成为训练神经网络的标配算法。Adam 使用了一阶动量(梯度的指数…...
嵌入式学习第二十三天--网络及TCP
进程通信的方式: 同一主机 传统 system V 不同主机 网络 --- 解决不同主机间 的进程间通信 网络 (通信) //1.物理层面 --- 联通(通路) //卫星 2G 3G 4G 5G 星链 (千帆) //2.逻辑层面 --- 通路(软件) MAC os LINUX …...
前端表单提交与后端处理全解析:从HTML到Axios与SpringBoot实战
前端表单提交与后端处理全解析:从HTML到Axios与SpringBoot实战 一、GET与POST请求的两种面孔 1. HTML表单基础实现 <!-- GET请求示例:搜索表单 --> <form action="/api/search" method="GET"><input type="text" name="…...
python django orm websocket html 实现deepseek持续聊天对话页面
最终效果: 技术栈: python django orm websocket html 项目结构: 这里只展示关键代码: File: consumers.py # -*- coding:utf-8 -*- # Author: 喵酱 # time: 2025 - 03 -02 # File: consumers.py # desc: import json from asg…...
大白话html语义化标签优势与应用场景
大白话html语义化标签优势与应用场景 大白话解释 语义化标签就是那些名字能让人一看就大概知道它是用来做什么的标签。以前我们经常用<div>来做各种布局,但是<div>本身没有什么实际的含义,就像一个没有名字的盒子。而语义化标签就像是有名…...
考研英语语法全攻略:从基础到长难句剖析
引言 在考研英语的备考之旅中,语法犹如一座灯塔,为我们在浩瀚的英语知识海洋中指引方向。无论是阅读理解中复杂长难句的解读,还是写作时准确流畅表达的需求,扎实的语法基础都起着至关重要的作用。本文将结合有道考研语法基础入门课的相关内容,为大家全面梳理考研英语语法…...
Vue3 生命周期
回顾Vue2的生命周期 创建(创建前,创建完毕)beforeCreate、created挂载(挂载前,挂载完毕)beforeMount、mounted更新(更新前,更新完毕)beforeUpdate、updated销毁…...
hbase-05 namespace、数据的确界TTL
要点 掌握HBase的命名空间namespace概念 掌握HBase数据版本确界 掌握HBase数据TTL 1. HBase的namespace 1.1 namespace基本介绍 在HBase中,namespace命名空间指对一组表的逻辑分组,类似RDBMS中的database,方便对表在业务上划分。Apache…...
线程的常见使用方法
Java中的线程并不是真正意义的线程,我们使用的是Thread类来表示线程,而这个类是 JVM 用来管理线程的一个类,也就是说,每个线程都有一个唯一的 Thread对象 与之关联 每一个执行流都需要有一个对象来进行描述,那么一个Thread对象就是用来表述一个线程执行流的,JVM会将这些对象统…...
架构师面试(十一):消息收发
问题 IM 是互联网中非常典型的独立的系统,麻雀虽小但五脏俱全,非常值得深入研究和探讨,继上次IM相关题目之后,我们继续讨论IM相关话题。 关于IM系统【消息收发模型】的相关描述,下面说法错误的有哪几项? …...
MoonSharp 文档一
目录 1.Getting Started 步骤1:在 IDE 中引入 MoonSharp 步骤2:引入命名空间 步骤3:调用脚本 步骤4:运行代码 2.Keeping a Script around 步骤1:复现前教程所有操作 步骤2:改为创建Script对象 步骤…...
【linux网络编程】端口
一、端口(Port)概述 在计算机网络中,端口(Port) 是用来标识不同进程或服务的逻辑通信端点。它类似于一座大楼的房间号,帮助操作系统和网络协议区分不同的应用程序,以便正确地传输数据。 1. 端口…...
Vulnhub-Node
目录标题 一、靶机搭建二、信息收集靶机信息扫ip扫开放端口和版本服务信息指纹探测目录扫描 三、Web渗透信息收集zip爆破ssh连接 四、提权内核版本提权 利用信息收集拿到路径得到账户密码,下载备份文件,base64解密后,利用fcrackzip爆破zip压缩…...
RK3568平台(camera篇)camera3_profiles_rk3588.xml解析
camera3_profiles_rk3588.xml 是一个与 Android 相机 HAL(硬件抽象层)相关的配置文件,通常用于定义 Rockchip RK3588 平台上的相机设备及其功能。该文件基于 Android 的 Camera3 HAL 框架,用于描述相机的配置、流配置、分辨率、帧率、格式等信息。 以下是对 camera3_profi…...
高阶哈希算法
SHA-256简介 SHA-256 是 **SHA-2(Secure Hash Algorithm 2)**家族中的一种哈希算法,由美国国家安全局设计,并于 2001 年发布。它能够将任意长度的数据映射为一个固定长度256 位,即 32 字节的哈希值,通常以…...
Spark数据倾斜深度解析与实战解决方案
Spark数据倾斜深度解析与实战解决方案 一、数据倾斜的本质与影响 数据倾斜是分布式计算中因数据分布不均导致的性能瓶颈现象。当某些Key对应的数据量远超其他Key时,这些"热点Key"所在的Task会消耗80%以上的计算时间,成为整个作业的木桶短板。具体表现为: Task执…...
Kubernetes滚动更新实践
前言 在我之前的项目中,对微服务升级采用的做法是删除整个namespace, 再重新应用所有yaml。 这种方式简单粗暴,但是不可避免的导致服务中断,影响了用户体验 为了解决更新服务导致的服务中断问题, Kubernetes提供了一种…...
Broken pipe
比较常见的一个问题。 但是并不是每个人都能说清楚。 首先注意下写法: Broken pipe # B大写 p小写 主要是grep的时候别写错了 常见的原因 1、客户端关闭连接。 在服务器端处理请求的过程中,客户端突然关闭了连接,例如浏览器关闭、网络断开…...
doris:ClickHouse
Doris JDBC Catalog 支持通过标准 JDBC 接口连接 ClickHouse 数据库。本文档介绍如何配置 ClickHouse 数据库连接。 使用须知 要连接到 ClickHouse 数据库,您需要 ClickHouse 23.x 或更高版本 (低于此版本未经充分测试)。 ClickHouse 数据库的 JDBC 驱动程序&a…...
前K个高频单词
692. 前K个高频单词 - 力扣(LeetCode) 题目描述: 给定一个单词列表 words 和一个整数 k ,返回前 k 个出现次数最多的单词。 返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率, 按字典顺序 排序…...
恢复IDEA的Load Maven Changes按钮
写代码的时候不知道点到什么东西了,pom文件上的这个弹窗就是不出来了,重启IDEA,reset windos都没用,网上搜也没收到解决方案 然后开打开其他项目窗口时,看到那个的功能名叫 Hide This Notification 于是跑到Setting里…...
【五.LangChain技术与应用】【31.LangChain ReAct Agent:反应式智能代理的实现】
一、ReAct Agent是啥?为什么说它比「普通AI」聪明? 想象一下,你让ChatGPT查快递物流,它可能直接编个假单号糊弄你。但换成ReAct Agent,它会先推理(Reasoning)需要调用哪个接口,再行动(Action)查询真实数据——这就是ReAct的核心:让AI学会「动脑子」再动手。 举个真…...
Leetcode 62: 不同路径
Leetcode 62: 不同路径 问题描述: 一个机器人位于一个 (m \times n) 网格的左上角(起始点位于 ((0, 0)))。 机器人每次只能向下或向右移动一步。网格的右下角为终点(位于 ((m-1, n-1)))。 计算机器人从左上角到右下角…...
计算机毕业设计SpringBoot+Vue.js火锅店管理系统(源码+文档+PPT+讲解)
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...