Java 2 Micro Edition (J2ME)



ротационное соединение deublin цена | ротационное соединение многопоточное |

Соединения coкeтa - часть 3


  • Клиент и сервер взаимодействуют через новое соединение.
  • Демон сервера продолжает прослушивать последующие запросы соединения на известном сокете.
  • На рисунке 8.5 показано схематичное представление этого процесса. Порядок этапов в вышеописанном списке соответствует порядку, показанному на рисунке 8.5.

    Рисунок 8.5. Базирующиеся на сокетах службы должны быть способны выполнять асинхронную обработку. Демон порождает нить для контролирования взаимодействия с каждым клиентом

    Согласно соглашению, известный сокет использует предварительно определенный порт для установления соединений с клиентами. Использование определенного порта определенной службой уникально для каждой службы - сокета, дейтаграммы и так далее. Клиенты, таким образом, знают, как достичь соединения с желаемым сервером для запроса соединения.

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

    Идиома открытия сокетов очень сходна с идиомой открытия дейтаграмм. Приложения пересылают URI в метод создания Connector.open() для получения соединения. Синтаксис LJRI следующий:

    address := <протокол>://<адресат>

    protocol := "socket"

    target := [<хост>]:<порт>

    host := Оначимое DNS-имя хоста или его номер>

    port := оначимый системный номер порта>

    Еще раз повторюсь, присутствие или отсутствие имени компьютера в URI говорит о том, является ли соединение серверным или клиентским. Демон сервера сначала открывает соединение на своем известном сокете, как показано в следующем примере:

    StreamConnectionNotifier wellKnown =

    Connector.open("socket://:98765");




    Содержание  Назад  Вперед