Теория и практика программирования на Си в Unix

       

Использование в режиме соединения



Клиент:
- открывает точку доступа транспортной службы;
- присваивает услуге адрес ("binding");
- устанавливает соединение с сервером, выдавая адрес сервера и адрес службы;
- считывает или осуществляет запись в канале связи;
Сервер:
- открывает точку доступа транспортной службы;
- связывает адрес с услугой ("binding");
- устанавливается в режим ожидания входящих соединений,
создавая очередь.
Для каждого входящего соединения:
- дает согласие на соединение, если это возможно (новое соединение открывается с теми же характеристиками;
- считывает или осуществляет запись в созданном таким образом канале связи. Инициатива закрытия соединения зависит от семантики задачи. На рис. 5.4. показаны вызовы, используемые в режиме установ- ления соединения.

    Рис. 5.4. Использование TLI в режиме соединения.

    Некоторые вызовы являются блокирующимися:
    Клиент:
    - t_connect () до тех пор,пока сервер осуществит не t_accept ();
    - t_snd () при переполнении буфера передачи;
    - t_rcv () до тех пор, пока вследствие t_snd () сервера не будет получен хотя бы один символ.
    Сервер:
    - t_listen () до тех пор, пока одним из клиентов не будет получен запрос на входящее соединение;
    - t_rcv () до тех пор, пока вследствие t_snd () клиента не будет получен хотя бы один символ;
    - t_snd () при переполнении буфера передачи;

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



    Содержание раздела