我第一次在 C++ 中使用 UDP 套接字,但我不确定我是否理解它们是如何工作的。我知道sendto
/recvfrom
和send
/recv
通常返回实际发送或接收的字节数。我听说这个值可以任意小(但至少为 1),并且取决于套接字缓冲区中有多少数据(读取时)或缓冲区中剩余多少可用空间(写入时)。
如果sendto
且recvfrom
仅保证一次发送或接收 1 个字节,并且可以乱序接收数据报,那么任何 UDP 协议如何保持一致?这不是意味着当我收到消息中的字节时可以任意打乱它们吗?有没有办法保证一次发送或接收一条消息?