下载 FreeRTOS
 

出色的 RTOS & 嵌入式软件

最新资讯
简化任何设备的身份验证云连接。
利用 CoAP 设计节能型云连接 IoT 解决方案。
11.0.0 版 FreeRTOS 内核简介:
FreeRTOS 路线图和代码贡献流程。
使用 FreeRTOS 实现 OPC-UA over TSN。

FreeRTOS_send()

[FreeRTOS-Plus-TCP API 引用]

FreeRTOS_sockets.h
BaseType_t FreeRTOS_send( Socket_t xSocket,
                          const void *pvBuffer,
                          size_t xDataLength,
                          BaseType_t xFlags );
		

发送数据至 TCP 套接字(请参阅 FreeRTOS_sendto(), 了解 UDP 的对应内容)。

套接字必须已通过 调用 FreeRTOS_socket() 创建, 并已绑定到端口号,且已连接到远程套接字。

可通过调用 FreeRTOS_bind() 将套接字显式绑定到端口号。

套接字可使用 FreeRTOS_connect() 主动连接到远程套接字。 如果在未绑定到端口号的套接字上调用 FreeRTOS_connect(), 并且 ipconfigALLOW_SOCKET_SEND_WITHOUT_BIND 的值 在 FreeRTOSIPConfig.h 中置为 1,则 TCP/IP 堆栈会自动将套接字绑定 到私有地址范围中的端口号。

或者,套接字可以使用 FreeRTOS_accept() 等待传入连接。

FreeRTOS_send() 具有可选超时。 该超时默认为 ipconfigSOCK_DEFAULT_SEND_BLOCK_TIME, 并使用 FREERTOS_SO_SNDTIMEO 参数通过调用 FreeRTOS_setsockopt() 进行修改。 如果发送操作不能立即将字节加入队列等待传输,那么 调用 RTOS 任务将被保持在阻塞状态(以执行其他任务 ),直至可排队发送字节,或 超时到期。

FreeRTOS-Plus-TCP [当前]未使用所有函数参数。 未使用的参数保留在函数的原型中, 确保与预期的标准伯克利套接字 API 一致, 并确保与 FreeRTOS-Plus-TCP 的未来版本兼容。

参数:

xSocket   接收发送数据的套接字的句柄。 套接字 必须已创建并绑定到端口 号(请参阅 FreeRTOS_socket()FreeRTOS_bind())。

pvBuffer   指向正在被传输的 数据来源。
xDataLength   待发送的字节数。

xFlags   目前未使用。 未来的 FreeRTOS-Plus-TCP 版本可能 使用 ulFlags 参数实现发送选项。

返回:

如果发送成功,则返回排队等待发送的 字节数(请注意,该数值可能少于 xTotalDataLength 参数请求的字节数)。

如果由于套接字未开启或已关闭而无法发送数据, 则返回 -pdFREERTOS_ERRNO_ENOTCONN。

如果由于内存不足而无法发送数据,则 返回 -pdFREERTOS_ERRNO_ENOMEM。

如果由于 xSocket 不是有效的 TCP 套接字而无法发送数据,则 返回 -pdFREERTOS_ERRNO_EINVAL。

如果在可以发送任何数据之前发生超时,则返回 -pdFREERTOS_ERRNO_ENOSPC 。

请注意,因为 FreeRTOS 未实现 errno, 在出现错误时的行为必然与 send() 函数的行为不同, 后者完全符合预期的伯克利 套接字行为。

用法示例:

请参阅 《创建、配置和绑定 TCP 客户端和服务器套接字》一章 (位于 FreeRTOS-Plus-TCP 网络教程页面), 获取有关如何为发送数据准备 TCP 套接字的示例。

请参阅 《发送 TCP 数据》部分(位于 FreeRTOS-Plus-TCP 网络教程页面), 获取将数据发送到 TCP 套接字的示例。

Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.