Ну, так, а вы почитайте про разницу UDP и TCP и всё станет понятно.
В UDP нет понятия подключения или потока байт. Там есть понятия датаграмм. Это атомарные сущности, которые принимаются точно так же, как и отсылаются, абсолютно в том же виде.
Каналы в джаве созданы просто для унификации, для некого подобия псевдо-стримминга для удобной обработки. На самом же деле, никакого канала и потока нет. Есть отдельные датаграммы определённого размера, которые вы должны принимать.
Каждый клиент идентифицируется по его паре адрес:порт, с которого пришли данные через функцию recvfrom
. Других вариантов нет.
Это, если нужна синхронная обработка. Для асинхронного варианта, как уже ответил dummyman, удобнее использовать Asio.