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.