С UDP вам почти всегда нужен только один сокет;Вы можете вызвать sendto()
и recvfrom()
на нем, чтобы отправлять и получать пакеты UDP из любой точки.
Что касается пропущенных пакетов UDP, то это факт жизни с UDP;Пакеты UDP могут и иногда будут отбрасываться на любом этапе пути от отправителя и получателя. Вам нужно будет спроектировать ваше приложение, чтобы это терпеть, или, в качестве альтернативы, придумать механизм, с помощью которого получатель может обнаружить, что пакет был потерян, и запросить повторную отправку (или каким-то другим образом обработать эти ситуации).