ПРОГРАММИРОВАНИЕ ДЛЯ INTERNET
12.1. Технологии для работы в Internet
Visual C++ обладает технологиями, облегчающими разработку приложений для работы в Internet, значительно расширяющими возможности приложений. К ним относятся Winsock (Windows Socket), MAPI (Messaging Application Programming Interface), WinInet (Windows Internet), ISAPI (Internet Server API), ActiveX для Web.
Еще до появления операционной системы Windows в Internet соглашение Berkley sockets (гнезда из Беркли) было стандартом связи TCP/IP между компьютерами UNIX. Протоколы TCP/IP (Transmission Control Protocol/Internet Protocol) появились и в других операционных системах. Затем группа из 20 разработчиков создала технологию WinSock (Windows Socket) – базовый API для TCP/IP. Программирование в технологии Winsock основано на следующих принципах. Каждый компьютер имеет числовой адрес – IP-адрес, а программы имеют собственный порт. Комбинация IP-адреса и номера порта называется socket (гнездо). Протокол TCP устанавливает дуплексную связь между программами с помощью гнезд. После установления соединения осуществляется передача и прием потока байтов. В MFC имеются два класса Winsock: CAsyncSocket и CSocket, реализующих асинхронное программирование Winsock. Написание Winsock-программ достаточно трудоемкий процесс, требуется много рутинной работы, например, самостоятельное заполнение структуры адреса гнезда. Технология Winsock может быть применена для написания клиент/серверных программ для Internet, но не использующих приложения типа электронной почты, Web, FTP и других популярных приложений Internet. Для этих приложений лучше использовать более передовые технологии MAPI, WinInet, ISAPI, ActiveX для Web, предоставляющие программистам большие возможности.
Технология MAPI (Messaging API - почтовый интерфейс) – это средство разработки приложений, осуществляющих пересылку и прием сообщений для самой популярной информационной службы Internet электронной почты. Для использования MAPI достаточно на этапе 4 создания приложения с помощью AppWizard установить флажок на опции MAPI. В меню File создается новый пункт Send, при выборе которого запускается клиент MAPI для посылки сообщения, содержащего текущий документ. Остается только дописать адрес, тему сообщения и текст для документа. Существуют и более сложные интерфейсы MAPI: Extendet MAPI (расширенный MAPI) и OLE Messaging (обработка сообщений OLE), основанных на концепции технологии ActiveX (см. гл. 10).
Наиболее популярной технологией программирования для Internet является технология WinInet (Windows Internet). В библиотеке классов MFC Visual C++ имеются классы WinInet, облегчающие написание клиентских приложений и освобождающие от использования WinSock. Связь классов WinInet выглядит следующим образом:
CObject
CException CInternetSession
CInternetException CInternetConnection
CFile CFtpConnection
CStdioFile CGopherConnection
CInternetFile CHttpConnection
CHttpFile CFileFind
CGopherFile CFtpFileFind
CGopherFileFind
CGopherLocation
Работа в Internet происходит в следующей последовательности: класс CInternetSession создает объект класса; затем, при наличии адреса ресурса URL устанавливается соединение с помощью функции OpenURL() по протоколу HTTP (HiperText Transfer Protocol), FTP (File Transfer Protocol) или Gopher (старый текстовый протокол, связи в котором устанавливает администратор); функция OpenUrl() возвращает указатель на файловый объект класса CStdioFile; затем происходит считывание содержимого файла с помощью функций класса CStdioFile. При отсутствии адреса URL сеанс работы с Internet происходит в следующей последовательности: с помощью функций GetHtttpConnection(), GetFtpConnection(), GetGopherConnection() класса CInternetSession определяется объект соединения и устанавливается соединение по указанному протоколу; затем, вызывается функция OpenFile() соответствующего объекта соединения, т.е. CHttpConnection::OpenFile() возвращает объект класса CHttpFile, CFtpConnection::OpenFile() возвращает объект класса CInternetFile, CGopherConnection::OpenFile() возвращает объект класса CGopherFile.
Основные функции класса CInternetSession представлены в следующей таблице:
Функция |
Назначение |
CinternetSession |
Создает объект класса |
Close |
Разрывает соединение с Internet |
GetContext |
Получает идентификатор контекста для сеанса Internet |
GetFtpConnection |
Открывает сеанс FTP с сервером |
GetGopherConnection |
Открывает сервер Gopher для приложения |
GetHttpConnection |
Открывает сервер HTTP для приложения |
OpenURL |
Анализирует и открывает URL (адрес) |
Основные функции класса CFtpConnection представлены в следующей таблице:
Функция |
Назначение |
CftpConnection |
Создает объект класса CftpConnection |
Close |
Разрывает подключение к серверу |
CreateDirectory |
Создает каталог на сервере |
GetCurrentDirectory |
Получает текущий каталог для подключения |
GetCurrentDirectoryAsURL |
Получает текущий каталог для подключения URL |
GetFile |
Получает файл с сервера |
OpenFile |
Открывает файл на сервере |
PutFile |
Помещает файл на сервер |
Remove |
Удаляет файл с сервера |
RemoveDirectory |
Удаляет заданный каталог с сервера |
Rename |
Переименовывает файл на сервере |
SetCurrentDirectory |
Задает текущий каталог для FTP |
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.