Всё верно: в UDP нет соединений, там идёт обмен данными независимыми пакетами. Все эти пакеты приходят в один сокет, даже если отправители разные. Считывание из этого сокета идёт последовательно в порядке прихода пакетов. Также нужно иметь в виду, что если пакетов идёт очень много, а обрабатываются они медленно, возможна ситуация, когда у операционной системы не хватит буферов для приёма новых пакетов, и они начнут терятся.
Чтобы понять, от кого пакет, и что с ним делать, нужно либо в самих данных передавать какой-нибудь идентификатор отправителя, либо вместо recv использовать функцию recvfrom. Она получает не только сам пакет, но и IP-адрес отправителя.