This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] RTOS/66AK2H12:任务间的 TCP/IP 套接字支持

Guru**** 2551110 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/621072/rtos-66ak2h12-tcp-ip-socket-support-across-tasks

器件型号:66AK2H12

工具/软件:TI-RTOS

我正在进行一项需要 TPC/IP 服务器支持的设计。 过去、我打开了一个侦听器套接字、一旦客户端连接、就会分离出一个接收器线程和一个共享已连接套接字的传输线程。 我正在尝试使用 SYS/BIOS 任务对执行此新操作、但它无法正常工作。 我使用 DemonNew 设置服务器。 在客户端连接上,我传递给 DemonNew 的调用是调用,我的目的是使用接收线程在无限循环中阻止 recvnc(),但在执行该操作之前,我的传输线程是 Task-create()。

当我在接收到有关 recv 线程的请求后将某个内容排队到传输轮距时、我的客户端仅获得一个字节、我的应用程序显示套接字错误、然后在崩溃后不久就会出现。 我已经在 CCS 调试下检查了发送端的套接字编号是否正确、要发送的字节计数是否正确以及发送缓冲区指针是否正确。 所有数据都受关键段保护、套接字本身不受保护。

在 SYS/BIOS 下这种方法是否存在缺陷?

(SYS/BIOS 6.46、XDCtools 3.32、NDK 2.25)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    我已通知 RTOS 团队。 他们的反馈将在此处发布。

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢。 更多详细信息-

    我在连接回调线程上获得 recvnc()数据。
    我尝试通过同一套接字上的新任务线程发送、但失败了
    回叫线程上的接收器调用返回时出现错误、此时我向发送线程发出终止信号。

    客户端任务从不接收任何数据(我在接收到一个字节之前错误地指示)。

    我正在关闭回叫接收线程上的套接字、但现在我正在关闭发送线程、并且出于某种原因不会导致应用崩溃。 不确定原因。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Mike、

    我们将对此进行研究、并将返回给您。

    Lali
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    无响应? 我们最终自行解决了这个问题、对于具有 SYS/BIOS NDK 经验的人来说、答案应该非常简单、对我来说、我已经完全阅读了 NDK API 文档。

    跨任务共享套接字就像共享文件描述符。 要使用文件描述符,新任务需要首先使用 fdOpenSession()分配文件描述符表。 然后,为了共享套接字描述符(文件描述符),使用 fdShare()。

    NDK API 中描述了我的具体情况:"例如,fdShare()在任务 A 打开会话并在套接字的循环中调用 recv()的情况下非常有用。 任务 B 有一个在同一套接字上调用 send()的循环。 如果您没有在第一个任务打开套接字后从第二个任务调用 fdOpenSession(),则从任务 B 调用 send()将失败,然后 fdError()将返回-1。"