Java UDP DatagramPacket - PullRequest
       6

Java UDP DatagramPacket

0 голосов
/ 07 марта 2011

Я реализовал для изучения сервер Echo с UDP и датаграммами, но у меня есть сомнения в терминологии.

Если для отправки DatagramPacket я должен подключиться к серверу, прослушивающему порт, куда отправлятьэто через сокет, почему в некоторых книгах говорится, что UDP - это протокол без установления соединения?

Требуется соединение или что я не понимаю?

Спасибо.

Ответы [ 3 ]

2 голосов
/ 07 марта 2011

В этом случае «без соединения» относится к тому факту, что UDP не выполняет квитирование для настройки своего соединения.Кроме того, нет подтверждения приема пакетов, которые отправляются, если только серверный протокол не был разработан для их отправки.

Хотя DatagramSocket имеет метод соединения, API сообщает:
"Если удаленныйпункт назначения, к которому подключен сокет, не существует или иным образом недоступен, и если для этого адреса был получен недоступный пакет пункта назначения ICMP, то последующий вызов для отправки или получения может вызвать исключение PortUnreachableException.будет сгенерировано исключение. "

Таким образом, вы можете отправлять данные на адрес и не указывать, что соединение на самом деле отсутствует.

1 голос
/ 07 марта 2011

UDP - это протокол без установления соединения. Вам не нужно / не могу подключиться, чтобы использовать UDP. Однако, если у вас есть требование для установления соединения, я предлагаю вам использовать TCP.

РЕДАКТИРОВАТЬ: DatagramSocket имеет метод подключения, однако все, что он делает, это

Подключает сокет к удаленному адресу для этого сокета. Когда сокет подключен к удаленному адресу, пакеты могут отправляться или приниматься только с этого адреса. По умолчанию сокет дейтаграммы не подключен.

Он не устанавливает соединение как таковое.

1 голос
/ 07 марта 2011

Без установления соединения означает, что принимающий сервер не сохраняет состояние соединения и что вы не получаете ответ от принимающего сервера (подтверждение или ошибка).

Однако связь, как всегда, осуществляется через порты / сокеты, вам нужен локальный порт и удаленный порт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...