Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
UDP套接字发送失败的处理_Udp - Fatal编程技术网

UDP套接字发送失败的处理

UDP套接字发送失败的处理,udp,Udp,如果sendto根据手册页失败 成功时,这些调用返回发送的字符数。出现错误时,返回-1,并正确设置errno 我知道TCP确实是这样,你应该像Beej的《网络编程指南》中指出的那样,尝试发送剩余的数据 然而,部分发送UDP数据包对我来说毫无意义,这条评论似乎暗示了这一点 如果消息太长,无法通过基础协议进行原子传递,则返回错误EMSGSIZE,并返回消息 不传输 有人能帮我确认一下,如果我使用UDP数据包调用sendto(或send),如果它实际上不适合出站缓冲区,那么我将返回-1,并将errno

如果sendto根据手册页失败

成功时,这些调用返回发送的字符数。出现错误时,返回-1,并正确设置errno

我知道TCP确实是这样,你应该像Beej的《网络编程指南》中指出的那样,尝试发送剩余的数据

然而,部分发送UDP数据包对我来说毫无意义,这条评论似乎暗示了这一点

如果消息太长,无法通过基础协议进行原子传递,则返回错误EMSGSIZE,并返回消息 不传输


有人能帮我确认一下,如果我使用UDP数据包调用sendto(或send),如果它实际上不适合出站缓冲区,那么我将返回-1,并将errno设置为EMSGSIZE,并且没有使用流(TCP)套接字进行部分发送吗?

没有隐藏的含义,该函数只返回发送的字节数。它是Unix API的标准模式。数据报是全有或全无传递,如果网络导致出现碎片,则接收更为复杂,但通常堆栈会隐藏所有细节,并在重构时显示每个完整的数据包。

没有隐藏的含义,函数只返回发送的字节数。它是Unix API的标准模式。数据报是全有或全无的传送,如果网络导致出现碎片,则接收更为复杂,但通常堆栈会隐藏所有细节,并在重建时显示每个完整的数据包。

EMSGSIZE表明“套接字要求以原子方式发送消息,但要发送的消息的大小使得这不可能”(请参阅)

但是,出站缓冲区已满并不一定是原因-Linux(例如)默认情况下显然不会对UDP数据包进行分段(请参阅)。

EMSGSIZE表示“套接字要求以原子方式发送消息,但要发送的消息的大小使这不可能”(请参阅)

然而,出站缓冲区已满并不一定是原因——Linux(例如)在默认情况下显然不会对UDP数据包进行分段(请参阅)