gpt4 book ai didi

sockets - recvfrom()最多只能从UDP套接字获取2048个字节

转载 作者:行者123 更新时间:2023-12-03 12:00:42 27 4
gpt4 key购买 nike

给定len参数设置为10240,我必须反复调用该函数以获取所有数据。但这最终导致阻塞。如何获得所有数据并以独立于平台的方式安全返回?

顺便说一句,我在发送方使用netcat:

cat ocr_pi.png | nc -u server 5555



这个问题与nc的行为有关吗?我没有找到任何参数来设置UDP数据包大小(-O表示TCP)。
谢谢。

最佳答案

UDP作为消息发送和接收数据。在len参数中,您告诉recvfrom()您可以接收的最大邮件大小,然后recvfrom()等待直到完整的邮件到达,而不管其大小。 UDP消息是独立的。与TCP不同,UDP消息不能部分发送/接收。这是全有或全无的事情。如果接收到的消息的大小大于您指定的len值,则该消息将被丢弃,并且会出现错误。
recvfrom()阻止的唯一方法是没有可供读取的消息。如果您不想阻止,请使用select()(或pselect()epoll或其他等效的平台)指定等待消息到达的超时时间,然后仅在确实有要读取的内容时才调用recvfrom()

关于sockets - recvfrom()最多只能从UDP套接字获取2048个字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18962216/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com