【问题标题】:FreeRTOS Select with TCP sockets unavailable?带有 TCP 套接字的 FreeRTOS Select 不可用?
【发布时间】:2020-01-28 05:09:14
【问题描述】:

上下文

管理多个套接字连接的标准做法是使用pollselect。这允许调用线程(或任务,在这种情况下)阻塞,直到操作系统检测到数据可供读取(此时它恢复任务)

问题

在 FreeRTOS 中,系统 API 为此提供了一种称为 FreeRTOS_select 的机制。但是,文档指定:

  1. FreeRTOS_select 采用 xSocketSet_t 类型的套接字集(参见上面的链接),其中包含 xSocket 类型的套接字。
  2. xSocket 是用 FreeRTOS_socket 创建的。
  3. FreeRTOS_socket 的文档指出 xType(套接字类型)引用:“必须设置为 FREERTOS_SOCK_DGRAM”(参见上面的链接)。

如果只能创建数据报套接字,则不能将此选择调用与流套接字一起使用。在搜索创建流套接字时,我发现示例中对 FreeRTOS_socket here 的调用相同。但是,这是针对称为“FreeRTOS + TCP”的东西,API 没有select 的示例。返回的套接字类型不是xSocket_t,而是Socket_t


那么如何将 select 与 TCP 套接字一起使用?对此似乎没有一个直接的答案。我遇到的问题是我想使用 FreeRTOS 的内置 select 功能,因为它们可以自动为我管理任务。可能无法使用基于库的选择。

【问题讨论】:

    标签: c sockets select freertos lwip


    【解决方案1】:

    看来我错了,this link 上也有一个专用的FreeRTOS_select 调用,用于使用 TCP 进行选择。只是很难找到。这是我没有花足够的时间尝试使用其他方式查找 API 调用的错。

    【讨论】:

      猜你喜欢
      • 2015-05-20
      • 2017-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-08
      • 2016-03-03
      • 2011-04-14
      • 2021-01-09
      相关资源
      最近更新 更多