当我们使用recvfrom()从UDP套接字读取数据包时,不能部分读取它。因为如果我们首先读取UDP数据包的一小部分(通过传递一个小缓冲区),就会删除下面提到的数据包提醒:
所有接收操作只返回一个数据包。当数据包小于所传递的缓冲区时,只返回那么多数据;当数据包较大时,数据包为截断,并设置MSG_TRUNC标志。
但我想知道,如果我们只使用MSG_PEEK标志检查数据包,是否会发生同样的情况。如果我只是浏览UDP消息,会丢弃数据包提醒吗?
发布于 2020-09-12 14:18:21
如果我只看一看UDP消息,
会提醒丢包吗?
不会删除任何内容,因为设置了MSG_PEEK标志后,套接字的传入数据缓冲区的状态不会被修改;整个数据包将保留在套接字的缓冲区中。
当然,只有数据包的第一部分数据将被复制到您太小的目的地-数据缓冲区中。
https://stackoverflow.com/questions/63859134
复制相似问题