sockets - 实时操作系统上的UDP非阻塞套接字: sendto() and recvfrom() can return with partial message?

标签 sockets udp real-time recv sendto

这是我的第一个消息。
我正在使用实时操作系统(OnTime和VxWorks)上的非阻塞UDP套接字。
我已经阅读了文档和一些论坛,但是对于sendto()和recvfrom()函数的“原子性”有一些疑问:

  • sendto()返回入队或错误的字节数。是否可能小于输入缓冲区的长度?也许输出缓冲区没有足够的可用空间,只有几个字节被排队...
  • recvfrom()返回接收到的字节数或错误。可能小于源发送的消息大小吗?我的意思是阅读部分消息...

  • 我希望读写功能是原子性的(完整消息或无消息读/写)。

    谢谢。
    伊曼纽尔。

    我要求OnTime支持,他们告诉我,如果输出缓冲区没有足够的可用空间,则sendto()可能会排队接收部分消息。我不知道在某些情况下recvfrom()是否还会返回部分消息。我想不同操作系统之间的套接字实现没有标准行为。

    最佳答案

    我对这些系统不是很熟悉,但是如果它们破坏正常的UDP套接字语义,我将感到非常惊讶,这总是使“发送”中的完整数据报入队,而“接收”中的完整数据报出队。

    关于sockets - 实时操作系统上的UDP非阻塞套接字: sendto() and recvfrom() can return with partial message?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14320622/

    相关文章:

    c# - 触发事件时出现 NullReferenceException

    java - 我已经创建了一个带有套接字的 Java 服务器,如何打印到所有套接字?

    c - 如何从苹果网站获取套接字过滤器句柄(sflt_filter.sf_handle)的值以注册数据包过滤

    c - 原始套接字发送和接收

    python-3.x - 更快地绘制实时音频信号

    sockets - Majordomo 代理吞吐量测量

    c++ - 丢包纠错码 (UDP)

    real-time - 在线与实时

    node.js - 在 ubuntu 上安装 socket.io

    node.js - Socket.io-消息呈现延迟且数量不一