下载 FreeRTOS
 

出色的 RTOS & 嵌入式软件

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

FreeRTOS_accept()

[FreeRTOS-Plus-TCP API 引用]

FreeRTOS_sockets.h
Socket_t FreeRTOS_accept( Socket_t xServerSocket,
                           struct freertos_sockaddr *pxAddress,
                           socklen_t *pxAddressLength );
		

接受 TCP 套接字的连接。

必须先创建套接字, 即通过调用 FreeRTOS_socket() 创建, 然后调用 FreeRTOS_bind() 将其绑定到一个端口, 再调用 FreeRTOS_listen() 将其置入监听状态。

默认情况下,将创建一个新的套接字(子套接字)来处理任何接受的连接。 新的套接字将由 FreeRTOS_accept() 返回, 并可立即使用。 子套接字会继承 父套接字的所有属性。

FREERTOS_SO_REUSE_LISTEN_SOCKET 参数可以在 调用 FreeRTOS_setsockopt() 时使用, 用以配置父套接字 处理任何接受的 连接本身,而无需创建子套接字 完成此操作。 当套接字一次只处理一个连接时, 这是一个节省资源的有用方法。 例如,如果套接字被用来 实现只允许一个同时连接的 telnet 服务器, 此时可采用此方法。

FreeRTOS_accept() 具有一个可选超时。该超时默认为 ipconfigSOCK_DEFAULT_RECEIVE_BLOCK_TIME,并在 调用 FreeRTOS_setsockopt() 时使用 FREERTOS_SO_RCVTIMEO 参数进行修改。 如果 如果接受操作没有立即成功,那么调用 RTOS 任务 将被保持在阻塞状态(以执行其他 RTOS 任务), 直至连接被接受或超时过期。 参数:

xServerSocket   接受新连接的 监听套接字的句柄。

pxAddress   指向 freertos_sockaddr 结构体的指针, 该结构体将被(通过 FreeRTOS_accept())填充 IP 地址和 接受连接的套接字的 端口号。

pxAddressLength   当前未使用,但应设置为 sizeof (struct freertos_sockaddr),以确保未来的 兼容性。

返回:

如果来自远程套接字的连接被接受,且创建了新的本地套接字 来处理接受的连接,则将返回 新套接字的句柄。

如果 xServerSocket 不是有效 TCP 套接字,则返回 FREERTOS_INVALID_SOCKET 。

如果 xServerSocket 不处于监听状态(请参阅 FreeRTOS_listen()), 则返回 FREERTOS_INVALID_SOCKET。

如果在来自远程套接字的连接被接受之前发生超时, 则返回 NULL。

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

用法示例:

请参阅“创建、配置和绑定 TCP 服务器套接字”源 代码示例(详见 “创建、配置和绑定 TCP 客户端和服务器套接字” 一章,节选自《FreeRTOS-Plus-TCP 网络教程》)。

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