два определения из Википедии кажутся мне ясными
в телекоммуникациях, без установления соединения
описывает связь между двумя
конечные точки сети, в которых сообщение
может быть отправлен из одной конечной точки в
другой без предварительной договоренности.
устройство на одном конце связи
передает данные другому, без
сначала убедиться, что получатель
доступны и готовы получить
данные. Устройство, отправляющее сообщение
просто отправляет его на адрес
предполагаемый получатель.
...
Сеть с установлением соединения
протокол тот, который доставляет поток
данных в том же порядке, как это было
отправлено, после первого установления
сеанс связи.
Не думаю, что смогу улучшить эти определения, но позвольте мне попытаться объяснить это с точки зрения программирования сокетов, понимая, что сокет является интерфейсом программирования для TCP / UDP . В частности, если вы программируете серверные сокеты, скажем, на Java, вы заметите, как этот характер TCP и UDP, ориентированный на соединение и не требующий соединения, соответственно влияет на модель программирования.
В клиент-серверном приложении на базе TCP перед установкой любого обмена данными должно быть установлено соединение между клиентским сокетом и серверным сокетом, соответствующим этому клиентскому сокету. На сервере вам нужно будет создать ServerSocket
, а затем вызвать accept()
, чтобы получить Socket
, соответствующий подключению клиента. Один такой сокет создается для связи с каждым соединением от любого конкретного удаленного клиента (который инициируется созданием экземпляра класса Socket
). Подробнее см. этот пример кода .
С другой стороны, если вы программируете UPD, сокет вашего сервера в основном представляет собой объект DatagramSocket
, который прослушивает порт и принимает все отправленные ему дейтаграммы, а также может отправлять обратно дейтаграммы в любой конкретный клиентский сокет. То есть один сокет сервера, обслуживающий всех клиентов, потому что между любым клиентским соединением и сервером нет сквозного соединения. (Обратите внимание, что также не требуется никакого шага «serverSocket#accept()
».) Другими словами, каждый клиент и сервер могут просто отправлять дейтаграммы, не заботясь о том, готов ли другой конечный пункт принимать дейтаграммы или нет. Подробнее см. этот пример кода .