В чем разница между открытым сокетом и подключенным сокетом?

StackOverflow https://stackoverflow.com//questions/12685056

Вопрос

Ява Socket класс имеет два метода isClosed и isConnected чтобы проверить, закрыт ли сокет или подключен ли он соответственно.Я хотел знать, в чем разница между сокетом TCP, который только открыт, и сокетом TCP, который открыт и подключен, и чем он отличается от UDP.

Это было полезно?

Решение

Чтобы просто поставить вещи, генеракодицетагкод, который является Open , представляет собой разъем, который либо ждет подключения или успешно подключен к другому RenacodicetCode.Когда розетка была закрыта , это означает, что этот сокет больше не доступен для подключения, и что это ресурсы уже выпущены.Генеракодицетагкод, который подключен, хорошо, это означает, что розетка подключена к другому генеракодичевому коду.

Так что генеракодицетагкод может ..

    .
  • быть открытым и подключенным одновременно.
  • быть открытым и не подключенным одновременно.
  • не будет подключен при закрытии.

    <Сильное> Обновление

    от @bryan

    Видимо, есть наполовину замкнуты или половина открытых состояний для розетки TCP;какое использование (сегодня) отличается от его первоначального значения.Подробнее на этом Ссылка . .

Другие советы

На этой странице представлен довольно хороший обзор состояний сокетов: http://diranieh.com/SOCKETS/SocketStates.htm и разница между сокетами TCP и UDP.Особенно:

  • Состояние «Открыто» (TCP и UDP):Создан безымянный сокет.Безымянный сокет — это сокет, который не привязан к локальному адресу и порту.
  • Состояние «Подключено» (только TCP):Между локальным и удаленным хостом установлена ​​ассоциация (виртуальный канал).Отправка и получение данных теперь возможны.

Обратите внимание, что новые реализации java.net.DatagramSocket поддерживают расширение состояний сети TCP/IP:DatagramSocket также может находиться в состоянии «подключен», поэтому метод isConnected() не обязательно возвращает false, даже если сокет дейтаграммы никогда не «подключен» на сетевом уровне.В частности: «Когда DatagramSocket подключен к удаленному адресу, пакеты можно отправлять или получать только с этого адреса.По умолчанию дейтаграммный сокет не подключен».

Для получения дополнительной информации см. источники и JavaDoc.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top