Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПОС 15-21.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
156.67 Кб
Скачать

15. Сокеты. Особенности сокетов windows.(вопрос нашла в интернете!)

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

Сокеты Беркли (также известные как API сокетов BSD), впервые появились как API в операционной системе 4.2BSD Unix (выпущенной в 1983 году). Тем не менее, только в 1989 годуКалифорнийский университет в Беркли смог начать выпускать версии операционной системы и сетевой библиотеки без лицензионных ограничений AT&T, действующих в защищённой авторским правом Unix.

API сокетов Беркли сформировал de facto стандарт абстракции для сетевых сокетов. Большинство прочих языков программирования используют интерфейс, схожий с API языка Си.

API Интерфейса транспортного уровня (TLI), основанный на STREAMS, представляет собой альтернативу сокетному API. Тем не менее, API сокетов Беркли значительно преобладает в популярности и количестве реализаций.

Интерфейс сокета Беркли — API, позволяющий реализацию взаимодействия между компьютерами или между процессами на одном компьютере. Данная технология может работать со множеством различных устройств ввода/вывода и драйверов, несмотря на то, что их поддержка зависит от реализации операционной системы. Подобная реализация интерфейса лежит в основе TCP/IP, благодаря чему считается одной из фундаментальных технологий, на которых основывается Интернет. Технология сокетов впервые была разработана вКалифорнийском университете Беркли для применения на Юникс-системах. Все современные операционные системы имеют ту или иную реализацию интерфейса сокетов Беркли, так как это стало стандартным интерфейсом для подключения к сети Интернет.

Программисты могут получать доступ к интерфейсу сокетов на трёх различных уровнях, наиболее мощным и фундаментальным из которых является уровень сырых сокетов. Довольно небольшое число приложений нуждается в ограничении контроля над исходящими соединениями, реализуемыми ими, поэтому поддержка сырых сокетов задумывалась быть доступной только на компьютерах, применяемых для разработки на основе технологий, связанных с Интернет. Впоследствии, в большинстве операционных систем была реализована их поддержка, включая Windows XP.

16. Обмен файлами в сети internet. Модель протокола ftp.

FTP (File Transfer Protocol) - протокол, используемый исключительно для просмотра удаленных каталогов и для передачи файлов.

FTP использует два сетевых соединения, одно - для отправки команд, а второе - для приёма данных. У протокола FTP имеется свое состояние и он требует, чтобы клиент послал некоторое количество команд, прежде чем начать передачу файла. Клиенты FTP устанавливают соединение и держат его открытым в течение всей сессии. В каждой сессии может происходить несколько передач данных.

Класс QFtp предоставляет поддержку для FTP со стороны клиента. Он имеет следующие характеристики:

  • Неблокирующее поведение. QFtp асинхронный. Вы можете запланировать серию команд, которые будут выполнены позднее, когда элемент управления вернёт управление в цикл обработки событий Qt.

  • ID команд. Каждая команда имеет свой уникальный номер ID, который используется для слежения за выполнением команд. Например, QFtp передает сигналы commandStarted() и commandFinished() с ID команды для каждой выполняемой команды.

  • Индикаторы процесса передачи данных. QFtp посылает сигналы при передаче данных (QFtp::dataTransferProgress(), QNetworkReply::downloadProgress(), и QNetworkReply::uploadProgress()). Вы можете соединить данные сигналы, например, с QProgressBar::setProgress() или QProgressDialog::setProgress().

  • Поддержка QIODevice. Класс поддерживает удобную загрузку и выгрузку в QIODevice, дополнительно к API, основанному на QByteArray.

Есть два основных способа использования QFtp. Самый обычный способ состоит в том, чтобы отслеживать ID команд и следить за выполнением каждой команды, соединившись с соответствующим сигналом. Другой способ состоит в том, чтобы запланировать все команды сразу и соединиться только с сигналом done(), который посылается, когда все команды были выполнены. Первый способ требует большего количества работы, но дает больший контроль над выполнением конкретных задач и позволяет вводить дополнительные команды, основанные на результате предыдущих. Что позволяет обеспечить пользователю детализированную обратную связь.

Пример "FTP" иллюстрирует как писать FTP-клиент. Для написания собственного HTTP- или FTP-сервера понадобится использование классов низкого уровня QTcpSocket и QTcpServer.