UDP не использует соединение, но может иметь поддельное соединение, примененное на обоих концах к объектам сокета. TCP является потоковым протоколом (то, что вы отправляете, будет получено в чанках на другом конце), и дополнительно создает сокеты конечной точки для каждого принятого соединения сокетов (основной сокет прослушивания остается нетронутым, хотя вам, вероятно, придется вызывать listen () снова). UDP использует дейтаграммы, порции данных, которые принимаются целиком на другой стороне (если только размер не превышает MTU, но это другая история).
Мне кажется, что эти два куска кода оба используют TCP, и поэтому базовый протокол одинаков, они должны быть полностью совместимы друг с другом. Выглядит так, как будто вы должны использовать второй бит кода, поскольку он более высокого уровня, но на самом деле это может использовать только сервер, клиенту нужен другой бит кода, так как он не слушает, он подключается ... Если вы можете найти «соединительный» код на том же уровне абстракции, используйте его.