Краткий ответ: Нет.
Длинный ответ: UDP не заботится о потере пакетов. Если пакет UDP приходит и имеет неправильную контрольную сумму, он просто отбрасывается. Ни отправитель пакета не проинформирован об этом, ни получатель не проинформирован. Это только отброшено, вот и все, что происходит. Также UDP-пакеты не нумеруются, поэтому, если вы отправляете четыре пакета и только три приходят к получателю, получатель не может знать, что раньше было четыре, а один отсутствует. И последнее, но не менее важное: пакеты не подтверждаются, поэтому отправитель никогда не узнает, отправил ли он пакет получателю или нет.
В отличие от этого, TCP разбивает данные на сегменты, каждый сегмент нумеруется, чтобы получатель мог знать, отсутствует ли сегмент. Также все сегменты должны быть подтверждены отправителю. Если отправитель не получает подтверждения для сегмента по истечении определенного периода времени, он будет считать, что сегмент был потерян, и отправит его снова.
Конечно, вы можете добавить собственный заголовок фрейма поверх каждого фрагмента данных, который вы отправили по UDP, таким образом код вашего приложения может нумеровать отправленные фрагменты, и вы можете реализовать в своем коде стратегию повторного подтверждения, но вопрос в том, : Будет ли это действительно лучше, чем то, что TCP уже предлагает бесплатно? Даже если это будет одинаково хорошо, сэкономьте время и просто используйте TCP. Многие люди уже думали, что могут добиться большего успеха, чем TCP, и обычно они понимают, что на самом деле они не могут. У TCP есть свои недостатки, но в целом он довольно хорош в своих действиях.