В чем разница между записью и отправкой по каналам NIO? - PullRequest
2 голосов
/ 05 октября 2011

Я строю систему связи UDP с Java NIO и просматриваю javadoc для API, я заметил, что у каналов есть примитив записи и примитив отправки.Я сделал прототип и попробовал оба, и, похоже, ничего не изменилось, поскольку они оба доставляют буфер с другой стороны.Точно так же книги, на которые я смотрел, похоже, не помогают устранить это сомнение, поэтому я подумал спросить: в чем разница между channel.write и channel.send?

Заранее спасибо.

1 Ответ

1 голос
/ 05 октября 2011

Javadoc для DatagramChannel .send () сообщает вам разницу

Датаграмма передается из байтового буфера, как будто с помощью обычной операции записи.

Этот метод выполняет те же проверки безопасности, что и метод send класса DatagramSocket. То есть, если сокет не подключен к определенному удаленному адресу, и менеджер безопасности был установлен, то для каждой отправленной дейтаграммы этот метод проверяет, что целевой адрес и номер порта разрешены методом checkConnect менеджера безопасности. Издержки этой проверки безопасности можно избежать, сначала подключив сокет через метод connect.

...