![]() |
1
8
从Recv(2)手册页:
这就是发生在你身上的事情。 您应该有一个最大消息大小的缓冲区,并读取该大小。您将只读取一个数据报,并返回长度。然后,您可以从缓冲区的前面分析长度,并根据recvfrom(2)返回的内容对其进行验证。 |
![]() |
2
2
另一种方法是使用msg_peek标志执行一个虚拟的recvFrom。当返回的大小与缓冲区大小(或更大)相同时,请获取更大的缓冲区,然后重试。 然后再次执行recvfrom(不带msg_peek标志)以从UDP缓冲区中删除消息。 但是,当然,这是相当低效的,当您可以决定最大包大小时不应该这样做。 |
![]() |
MaPo · Linux,设置锁定ICMP_过滤器选项 5 月前 |
![]() |
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 5 月前 |
![]() |
Bobby · 复合字面值总是左值吗? 6 月前 |
![]() |
9-Pin · C: 嵌套结构的堆栈内存分配 6 月前 |