在UDP套接字上发送大数据

sor*_*h-r 5 qt udp

我需要使用udp发送和接收非常大的数据.不幸的是,udp每个图提供8192个字节,因此需要将数据分成更小的部分.我正在使用Qt和QUdpSocket.有一个QByteArray的921600与长我想发送给客户端.我想每次发送8192个字节.

拆分的快捷方式是QByteArray什么?

unw*_*ind 5

您永远不需要显式拆分数据,一次只需8 KB.通常,将数据写入套接字的函数(包括QUdpSocket::writeDatagram,似乎)接受指向第一个字节和字节计数的指针,因此您只需提供指向数组的指针即可.

请注意,发送8 KB数据报非常激进; 它们很可能在IP层碎片化,这会对传送速度和可靠性产生负面影响.

研究"路径MTU " 的概念,并尝试将其用于发送,它可能会更快,尽管它会产生更多的数据报.


Car*_*ten 3

您可以使用该QByteArray.mid(int start, int len)方法(请参阅此处的文档len)来获取长度从 开始的QByteArray start

只需设置len数据报大小并以0*len, 1*len, 2*len, ... 开头,直到所有内容都发送完毕。