在UDP中接收数据包

9 c# c++ networking udp

假设我的程序通过网络发送1000字节(UDP).是否保证接收器将在一个"批处理"中接收1000个字节?或许他需要进行几次"阅读",直到他收到整个信息?如果后者是真的,我如何确保同一消息的数据包顺序不会"混淆"(按顺序),或者协议可能保证它?
编辑:也就是说,我的邮件是否可能被拆分为多个数据包?(如果我尝试发送10000mb消息,那么会发生什么?)

Mar*_*rkR 13

你会得到全部或全部.

但是没有特别保证您按照传输顺序只接收一次数据包; 数据包丢失,重新排序和(较少经常)重复都是可能的.

存在最大帧大小(65,507字节),send()较大大小的数据包将返回错误.

您必须提供足够的缓冲区以在一次调用中接收整个帧.

UDP数据包可以分段为多个IP分段,但操作系统将丢弃不完整的数据包.因此,这对应用程序是透明的.