这是我在这里的第一条信息。我正在实时操作系统(OnTime 和 VxWorks)上使用非阻塞 UDP 套接字。我已经阅读了文档和一些论坛,但我对 sendto() 和 recvfrom() 函数的“原子性”有一些疑问:
sendto() 返回排队或错误的字节数。它是否可能小于输入缓冲区长度?也许输出缓冲区没有足够的可用空间,只有几个字节排队......
recvfrom() 返回接收到的字节数或错误。它是否可能小于源发送的消息的大小?我的意思是部分消息阅读...
我希望读写函数是原子的(完整的消息或没有消息读/写)。
谢谢。伊曼纽尔。
我询问了 OnTime 支持,他们告诉我,如果输出缓冲区没有足够的可用空间,sendto() 可能会将部分消息排入队列。我不知道 recvfrom() 在某些情况下是否也可以返回部分消息。我想不同操作系统之间的套接字实现没有标准行为。