Стек UDP значительно проще, чем стек TCP. Вы можете легко написать UDP-стек с нуля, TCP немного сложнее, выполнимее, но сложнее. В TCP встроены повторные попытки и другие действия, поэтому вы не теряете надёжность напрямую по UDP, это то, что вы делаете с ним, и это можно сравнить. UDP значительно быстрее, чем TCP, поэтому он используется или использовался для видео и различных вещей в прошлом. Также такие вещи, как видео, могут потерять пакет здесь и там, и это не волнует. Для встроенного UDP очень удобно, если он маленький, быстрый и т. Д. Если вы используете чью-то другую библиотеку, то UDP, вероятно, не сильно сэкономит вам ресурсы памяти и флэш-памяти, но все равно будет немного быстрее. Когда вы реализуете свой собственный UDP, вы значительно экономите память, потому что вы можете срезать углы. Вы можете делать такие вещи, как реализовывать только arp и udp и ничего больше (хотя ping полезен, но несколько болезненен), и вы можете обрезать углы на arp / rarp в зависимости от того, что вам нужно сделать с этим. Вы можете реализовать поддержку только для интересующего вас размера пакета. Нумерация ваших пакетов и отправка запрашивающей стороной двух или трех элементов всего и ответ на каждый запрос может значительно уменьшить проблему потери пакетов. Сохранение размера пакета очень маленьким помогает решить проблему как встроенного ресурса, так и избежать любых проблем mtu или других проблем на этом пути. Для простоты вы можете даже форсировать определенную длину пакета.
Я всегда задаю вопрос по-другому, что бы я получил, используя TCP. Бывают случаи, когда он полезен, встроен, настольный компьютер или сервер, хотя я все равно задаю этот вопрос каждый раз, и мне приходится оправдывать использование TCP поверх UDP, иначе я не буду его использовать.