Если вы просто отправляете данные в одной дейтаграмме, используя один вызов send()
, то фрагментация и повторная сборка будут выполняться для вас транспортным уровнем.Все, что вам нужно сделать, это предоставить достаточно большой буфер для recv()
, и если все фрагменты будут получены, они будут собраны и представлены вам как одна дейтаграмма.
По сути, это сервискоторый предоставляет вам UDP (где «датаграмма» - это отдельный блок данных, отправленных одним send()
вызовом):
- датаграмма может вообще не прийти;
- датаграмма может поступить не в порядке относительно других дейтаграмм;
- датаграмма может прибыть более одного раза;
- Если датаграмма действительно поступит, она будет завершенаи исправьте 1 .
Однако, если вы выполняете разделение данных на несколько дейтаграмм UDP самостоятельно, на прикладном уровне, то вы, конечно, будете нести ответственность за повторную сборкуэто тоже.
1.В любом случае исправьте с вероятностью, подразумеваемой контрольной суммой UDP.