下载 FreeRTOS
 

出色的 RTOS & 嵌入式软件

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

FreeRTOS_connect()

[FreeRTOS-Plus-TCP API 引用]

FreeRTOS_sockets.h
BaseType_t FreeRTOS_connect( Socket_t xClientSocket,
                             struct freertos_sockaddr *pxAddress,
                             socklen_t xAddressLength );
		

将 TCP 套接字连接到远程套接字。

必须首先通过调用 FreeRTOS_socket() 成功创建套接字, 然后选择性地通过调用 FreeRTOS_bind() 将其绑定到端口。

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

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

参数:

xClientSocket   正在绑定的套接字的句柄。 套接字 必须已被创建(请参阅 FreeRTOS_socket())。

pxAddress   指向 freertos_sockaddr 结构体的指针, 包含目标 IP 地址和端口号( 本地套接字尝试连接的远程套接字 )。

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

返回:

如果连接操作成功,则返回 0。

如果 TCP 不是有效的 FREERTOS_ERRNO_EBADF 套接字,则返回 -pd。

如果 FreeRTOS_connect 在 () 被调用之前已连接, 则返回 -pdFREERTOS_ERRNO_EISCONN。

如果 的当前状态不允许进行连接操作,则返回 -pdFREERTOS_ERRNO_EINPROGRESS 或 -pdFREERTOS_ERRNO_EAGAIN。

如果套接字的读取阻塞时间为零,且连接操作 无法立即成功,则返回 -pdFREERTOS_ERRNO_EWOULDBLOCK。

如果连接尝试超时,则返回 -pdFREERTOS_ERRNO_ETIMEDOUT 。

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

用法示例:

请参阅发送 TCP 数据部分 (FreeRTOS-Plus-TCP 联网教程页面)。

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