这是我的第一个消息。
我正在使用实时操作系统(OnTime和VxWorks)上的非阻塞UDP套接字。
我已经阅读了文档和一些论坛,但是对于sendto()和recvfrom()函数的“原子性”有一些疑问:
我希望读写功能是原子性的(完整消息或无消息读/写)。
谢谢。
伊曼纽尔。
我要求OnTime支持,他们告诉我,如果输出缓冲区没有足够的可用空间,则sendto()可能会排队接收部分消息。我不知道在某些情况下recvfrom()是否还会返回部分消息。我想不同操作系统之间的套接字实现没有标准行为。
最佳答案
我对这些系统不是很熟悉,但是如果它们破坏正常的UDP套接字语义,我将感到非常惊讶,这总是使“发送”中的完整数据报入队,而“接收”中的完整数据报出队。
关于sockets - 实时操作系统上的UDP非阻塞套接字: sendto() and recvfrom() can return with partial message?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14320622/