Асинхронный UDP-сервер с использованием Java NIO - Как идентифицировать клиента? - PullRequest
0 голосов
/ 08 января 2012

Я пытаюсь написать асинхронный UDP-сервер, используя Java NIO, Моя проблема состоит в том, чтобы найти идентификатор для каждого клиента, такой как IP-адрес или что-то подобное. по этой статье: http://thushw.blogspot.com/2011/06/asynchronous-udp-server-using-java-nio.html В UDP есть только один сокет для связи со всеми клиентами, я хочу держать Hushtable, который будет сохранять данные для каждого клиента в буферах. что-то вроде (IP, ClientBuffer). при каждом получении данных, которые отправляет специальный клиент, я хочу добавить его в свой буфер.

Я заметил, что в datagramPacket я могу получить IP с помощью метода datagramPacket.getSocketAddress (), но я не нашел способа получить datagramPacket из канала, мы получаем только данные, а не весь пакет с адрес.

Спасибо заранее !!!! Ривка:)

1 Ответ

0 голосов
/ 08 января 2012

Вы можете использовать метод DatagramChannel.read() только в том случае, если он подключен к клиенту, поэтому вы уже должны знать удаленный адрес: порт.В противном случае вам нужно позвонить receive(), когда вы получите удаленный порт ip: в DatagramPacket.Так или иначе, у вас есть это.

...