Навигация
Главная
Поиск
Форум
FAQ's
Ссылки
Карта сайта
Чат программистов

Статьи
-Delphi
-C/C++
-Turbo Pascal
-Assembler
-Java/JS
-PHP
-Perl
-DHTML
-Prolog
-GPSS
-Сайтостроительство
-CMS: PHP Fusion
-Инвестирование

Файлы
-Для программистов
-Компонеты для Delphi
-Исходники на Delphi
-Исходники на C/C++
-Книги по Delphi
-Книги по С/С++
-Книги по JAVA/JS
-Книги по Basic/VB/.NET
-Книги по PHP/MySQL
-Книги по Assembler
-PHP Fusion MOD'ы
-by Kest
Professional Download System
Реклама
Услуги

Автоматическое добавление статей на сайты на Wordpress, Joomla, DLE
Заказать продвижение сайта
Программа для рисования блок-схем
Инженерный калькулятор онлайн
Таблица сложения онлайн
Популярные статьи
OpenGL и Delphi... 65535
Форум на вашем ... 65535
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Invision Power ... 65535
Содержание сайт... 65535
Организация зап... 65535
Вызов хранимых ... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Модуль Forms 62809
Создание отчето... 62807
ТЕХНОЛОГИИ ДОСТ... 59343
Пример работы с... 58066
Имитационное мо... 54734
Реклама
Аренда складов bo-nn.ru.
Сейчас на сайте
Гостей: 13
На сайте нет зарегистрированных пользователей

Пользователей: 13,073
новичок: DENIS1996
Новости
Реклама
Выполняем курсовые и лабораторные по разным языкам программирования
Подробнее - курсовые и лабораторные на заказ
Delphi, Turbo Pascal, Assembler, C, C++, C#, Visual Basic, Java, GPSS, Prolog, 3D MAX, Компас 3D
Заказать программу для Windows Mobile, Symbian

Моделирование автомойки на GPSS + Отчет + Блок схемы
Моделирование процесса обработки заданий на вычислительном центре на GP...
Расчет размера дохода на одного человека в Turbo Pascal

Реклама



Подписывайся на YouTube канал о программировании, что бы не пропустить новые видео!

ПОДПИСЫВАЙСЯ на канал о программировании
Полезная информация о работе с интернет, модемом, и т. д.
Для начала, рассмотрим функции, необходимые для работы:

Dial-Up

InternetAutodial

Как сказано на msdk, "Causes the modem to automatically dial the default Internet connection", у меня просто вызывал диалог подключения InternetAutodial( dwFlags:Cardinal; hwndParent:hWnd ):BOOLEAN;
Параметры
dwFlags Параметры операции. Принимает следующие значения:
INTERNET_AUTODIAL_FAILIFSECURITYCHECK
INTERNET_AUTODIAL_FORCE_ONLINE
INTERNET_AUTODIAL_FORCE_UNATTENDED
hwndParent Handle окна Возвращает TRUE при успешном результате, FALSE в противном случае.

InternetAutodialHangup

Отсоединяет модем от линии. InternetAutodialHangup( dwReserved:Cardinal ):BOOLEAN;
Параметры
dwReserved Зарезервировано. Должно быть 0. Возвращает TRUE при успешном результате, FALSE в противном случае.

InternetGetConnectedState

Возвращает состояние соединения InternetGetConnectedState( var lpdwFlags:Cardinal; dwReserved:Cardinal ):BOOLEAN;
Параметры
lpdwFlags Свойства соединения. Флаги:
INTERNET_CONNECTION_CONFIGURED
INTERNET_CONNECTION_LAN
INTERNET_CONNECTION_MODEM
INTERNET_CONNECTION_MODEM_BUSY
INTERNET_CONNECTION_OFFLINE
INTERNET_CONNECTION_PROXY
INTERNET_RAS_INSTALLED
dwReserved Зарезервировано. Должно быть 0. Возвращает TRUE при успешном результате, FALSE в противном случае.

Работа с интернет

InternetOpen

Инициализирует соединение с интернет. InternetOpen( lpszAgent:PChar; dwAccessType:Cardinal; lpszProxyName:PChar; lpszProxyBypass:PChar; dwFlags:Cardinal ):hInternet;
Параметры
lpszAgent строка символов, которая передается серверу и сообщает ему название программы, пославшей запрос dwAccessType Параметры доступа. Принимает следующие значения:
INTERNET_OPEN_TYPE_DIRECT обрабатывает локально имена host'ов
INTERNET_OPEN_TYPE_PRECONFIG параметры берутся из реестра
INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY параметры также берутся из реестра и предотвращает запуск JScript и Internet Setup (INS) файлов
INTERNET_OPEN_TYPE_PROXY использовать указанный прокси лист, если не получилось, то используется INTERNET_OPEN_TYPE_DIRECT (прямое соединение с сервером)
lpszProxyName Указатель на строку, содержащую адрес прокси сервера, или их лист. Используется только если есть параметр INTERNET_OPEN_TYPE_PROXY. lpszProxyBypass Указатель на строку содержащей host'ы, или IP адреса, с которыми не должен использоваться прокси сервер dwFlags Параметр- флаги, влияющие на поведение функции. Возможны комбинации констант:
INTERNET_FLAG_ASYNC
INTERNET_FLAG_FROM_CACHE
INTERNET_FLAG_OFFLINE
Возвращает описатель, который позволяет использовать интернет функции в Вашей программе. Полученный описатель должен быть освобожден после спользования функций с помощью InternetCloseHandle. Вы можете несколько раз вызывать эту функцию в своей программе, но все они должны быть освобождены после(например, для разных прокси серверов). Если функция не успешна, то возвращается nil.

InternetCloseHandle

Закрывает описатель интернет соединения InternetCloseHandle( HINT:hInternet ):BOOLEAN;
Параметры
hInternet hInternet описатель, который следует закрыть Возвращает TRUE если описатель успешно закрыт и FALSE в противном случае

InternetConnect

Открывает FTP, Gopher, или HTTP сессию для данног файла сайта InternetConnect( HINT:hInternet; lpszServerName:PChar; nServerPort:INTERNET_PORT; lpszUserName:PChar; lpszPassword:PChar; dwService:Cardinal; dwFlags:Cardinal; dwContext:PCardinal ):hInternet;
Параметры
hInternet hInternet описатель, полученный от вызова InternetOpen lpszServerName Указатель на строку, содержащую имя host'а интернет сервера, или IP адрес сайта формата a.b.c.d(например, 255.0.0.0) nServerPort Номер TCP/IP порта, через который будет установлена связь с сервером. Вы можете использовать следующие константы
INTERNET_DEFAULT_FTP_PORT Стандартный порт для FTP сервера (порт 21)
INTERNET_DEFAULT_GOPHER_PORT Стандартный порт для Gopher сервера (порт 70)
INTERNET_DEFAULT_HTTP_PORT Стандартный порт для HTTP сервера (порт 80)
INTERNET_DEFAULT_HTTPS_PORT Стандартный порт для HTTPS сервера (порт 443)
INTERNET_DEFAULT_SOCKS_PORT Стандартный порт для SOCKS firewall сервера (порт 1080)
INTERNET_INVALID_PORT_NUMBER Использовать стандартный порт, для службы определенной параметром dwService.
lpszUsername Указатель на строку, содержащую имя пользователя lpszPassword Указатель на строку, содержащую пароль dwService Тип сервиса
INTERNET_SERVICE_FTP FTP сервис
INTERNET_SERVICE_GOPHER Gopher сервис
INTERNET_SERVICE_HTTP HTTP сервис
dwFlags Специальные параметры для соединения. dwContext Установите в 0. Возвращает описатель соединения с сервисом если соединение прошло успешно, nil в противном случае Таблица описывает поведение для 4 возможных установок параметров lpszUsername и lpszPassword
lpszUsername lpszPassword Имя пользователя, отсылаемого на FTP сервер Пароль, отсылаемый на FTP сервер
nil nil "anonymous" E-mail пользователя
Не нулевая строка nil lpszUsername ""
nil Не нулевая строка Ошибка Ошибка
Не нулевая строка Не нулевая строка lpszUsername lpszPassword

InternetOpenUrl

Чтение файла с данным URL должно начаться с этой функции. InternetOpenUrl( HINT:hInternet; lpszUrl:PChar; lpszHeaders:PChar; dwHeadersLength:Cardinal; dwFlags:Cardinal; dwContext:PCardinal ):hInternet;
Параметры
hInternet HINT- описатель интернет сессии, полученный вызовом функции InternetOpen lpszUrl Указатель на строку, содержащую URL файла. Поддерживаются URL начинающиеся с ftp:, gopher:, http:, или https: lpszHeaders Указатель на строку, содержащую заголовок запроса HTTP. dwHeadersLength Длина строки заголовка. Если значение этого параметра -1, то длина вычисляется автоматически dwFlags Дополнительные параметры. Вы можете использовать следующие флаги:
INTERNET_FLAG_EXISTING_CONNECT
INTERNET_FLAG_HYPERLINK
INTERNET_FLAG_IGNORE_CERT_CN_INVALID
INTERNET_FLAG_IGNORE_CERT_DATE_INVALID
INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP
INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS
INTERNET_FLAG_KEEP_CONNECTION
INTERNET_FLAG_NEED_FILE
INTERNET_FLAG_NO_AUTH
INTERNET_FLAG_NO_AUTO_REDIRECT
INTERNET_FLAG_NO_CACHE_WRITE
INTERNET_FLAG_NO_COOKIES
INTERNET_FLAG_NO_UI
INTERNET_FLAG_PASSIVE
INTERNET_FLAG_PRAGMA_NOCACHE
INTERNET_FLAG_RAW_DATA
INTERNET_FLAG_RELOAD
INTERNET_FLAG_RESYNCHRONIZE
INTERNET_FLAG_SECURE
dwContext Установите в 0 Возвращает описатель для FTP, Gopher, или HTTP ссылки если все прошло успешно, или nil в противном случае Чтобы узнать, почему сервер не дал доступа, вызовите InternetGetLastResponseInfo.

InternetReadFile

Чтение информации из описателя, полученного от функций InternetOpenUrl, FtpOpenFile, GopherOpenFile, или HttpOpenRequest. InternetReadFile( hFile:hInternet; lpBuffer:Pointer; dwNumberOfBytesToRead:Cardinal; lpdwNumberOfBytesRead:Cardinal ):BOOLEAN;
Параметры
hFile hFile- описатель файла, полученный от вызова InternetOpenUrl, FtpOpenFile, GopherOpenFile, или HttpOpenRequest lpBuffer Адрес буфера, в который записываются полученные данные dwNumberOfBytesToRead Количество байт, которые следует прочитать lpdwNumberOfBytesRead Количество реально прочитанных байт. Это значение будет установлено в 0 перед работой, или проверкой ошибок Возвращает TRUE при успешном завершении и FALSE в противном случае. Информация об ошибках передачи может быть получена от InternetGetLastResponseInfo
Замечания
Если значение функции TRUE и количество прочитанных байт 0, то передача файла успешно завершена(достигнут конец файла)

InternetSetFilePointer

Устанавливает точку чтения для InternetReadFile. Возможно, сервер не поддерживает возможность. InternetSetFilePointer( hFile:hInternet; lDistanceToMove:Integer; pReserved:Pointer; dwMoveMethod:Cardinal; dwContext:Cardinal ):Integer;
Параметры
hFile Описатель файла, полученный от вызова InternetOpenUrl (для HTTP,или HTTPS URL) или HttpOpenRequest (метод GET или HEAD). Описатель не должен быть создан со флагом INTERNET_FLAG_DONT_CACHE или INTERNET_FLAG_NO_CACHE_WRITE lDistanceToMove Значение, содержащее число байтов для передвижения файлового указателя. Положительное число означает передвижение вперед, отрицательное- назад. pReserved Зарезвировано. Установите в nil dwMoveMethod Параметр, указывающий способ перемещения. Возможно одно из следующих значений:
FILE_BEGIN Начальная точка- начало файла. Если установлен FILE_BEGIN, то lDistanceToMove интерпретируется, как положение новой точки чтения от начала.
FILE_CURRENT Текущая точка чтения- точка начала.
FILE_END Начальная точка- конец файла. Если размер файла не известен, то метод не работает
dwContext Зарезервировано. Установите в 0. При успешном выполнении возвращает текущую позицию(от начала) точки чтения, в противном случае возаращает -1.
Замечания
Функция не может быть использована, если достигнут конец файла функцией InternetReadFile. Правильная работа функции не гарантирована, если размер файла не может быть определен. Для нас эта функция нужна, чтобы использовать возможность возобновления скачивания файлов.
Для получения текста ошибки будем использовать следующую функцию:
Function GetErrorText(const FromServer:BOOLEAN):String;
Var Msg:Array[0..1023]of Char;
ErCode,Len:Cardinal;
begin
Len:=1023;
ZeroMemory(@Msg,SizeOf(Msg));
if FromServer
then
if InternetGetLastResponseInfo(ErCode,@Msg,Len)
then Result:='На сервере произошла ошибка #'+IntToStr(ErCode)+#13''''+StrPas(@msg)+''''
else Result:='Не могу получить описание ошибки'
else
if FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,
nil,GetLastError,
GetKeyboardLayout(0),
@Msg,1023,nil)<>0
then Result:=StrPas(@Msg)
else Result:='Не могу получить описание ошибки';
end;
 

Если параметр FromServer TRUE, то код ошибки и её текст берется с сервера, в противном случае берется текст локальной ошибки.
А теперь простейший пример закачки файла с сервера По кнопке Button1 происходит закачка. В Edit1 содержится URL файла без префикса http://
procedure TForm1.Button1Click(Sender: TObject);
Var

Session,URL:hInternet;

F:TFileStream;
Q,Fail:BOOLEAN;
Buf:Array[1..8192]of Byte;
R:Cardinal;
begin
Fail:=FALSE;

if SaveDialog1.Execute
then
begin
F:=TFileStream.Create(SaveDialog1.FileName,fmCreate);

Session:=InternetOpen('IExplorer',INTERNET_OPEN_TYPE_PRECONFIG,nil,nil,0);

if Session=nil
then begin
MessageDlg('Error, InternetOpen: Соединение не может быть установлено',
mtError,[mbOK],0);
exit;
end;

URL:=InternetOpenURL(Session,PChar('http://'+Edit1.Text),nil,0,0,0);
if URL=nil
then
begin
MessageDlg('Error, InternetOpenURL: Ссылка не может быть открыта!',
mtError,[mbOK],0);
InternetCloseHandle(Session);
exit;
end;

R:=0;

try
Repeat
Q:=InternetReadFile(URL,@Buf,8192,R);
F.Write(Buf,R);
until Q and(R=0)
except
MessageDlg('Error, не могу прочитать файл.'#13+GetErrorText(TRUE),
mtError,[mbOK],0);
InternetCloseHandle(Session);
InternetCloseHandle(URL);
Fail:=TRUE;
end;

if not Fail
then ShowMessage('Файл успешно скачен.');

InternetCloseHandle(URL);
InternetCloseHandle(Session);
F.Free;
end;
end;
Вот, собственно, и все. Желаю удачи!
Опубликовал Kest October 25 2008 15:31:32 · 1 Комментариев · 16232 Прочтений · Для печати

• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •


Комментарии
Delphi December 07 2013 16:29:20
Не указано добавить в USES - Wininet
Добавить комментарий
Имя:



smiley smiley smiley smiley smiley smiley smiley smiley smiley
Запретить смайлики в комментариях

Введите проверочный код:* =
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Нет данных для оценки.
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Поделиться ссылкой
Фолловь меня в Твиттере! • Смотрите канал о путешествияхКак приготовить мидии в тайланде?
Загрузки
Новые загрузки
iChat v.7.0 Final...
iComm v.6.1 - выв...
Visual Studio 200...
CodeGear RAD Stud...
Шаблон для новост...

Случайные загрузки
Autorunner
Род Стивенс. Delp...
Электронный магаз...
DelphiX
Введение в станда...
Х. М. Дейтел, П. ...
DCAVI
ICQ
Proeffectimage
3D Октаэдр
Matrix2D
C++ Builder в за...
Пользовательская...
EditButton
В.Понамарев - COM...
Cтатьи Королевств...
Векторный редакто...
Еext Editor
Работа с матрицами
Файловый менеджер

Топ загрузок
Приложение Клие... 100422
Delphi 7 Enterp... 84951
Converter AMR<-... 20062
GPSS World Stud... 11971
Borland C++Buil... 11406
Borland Delphi ... 8379
Turbo Pascal fo... 7008
Visual Studio 2... 4985
Калькулятор [Ис... 4630
FreeSMS v1.3.1 3530
Случайные статьи
Традиционные и гиб...
Измерение времени ...
сервера (всегда)]т...
Баннерная реклама ...
Особенности органи...
Виды роботов Яндекса
TRACE (НАЧАТЬ ТРАС...
Особенности разраб...
на ваше решение
Это можно предотвр...
Параметры, диагнос...
Запрограммировать ...
Решение вэтом случ...
ВВЕДЕНИЕ
Проверить, правиль...
Опции публикации
Коллекция таблиц, ...
Какие операции нео...
Краткая характерис...
Invalid file acces...
или общественной
Установление подли...
4.3. Задачи
Поддержка модема в...
Глава 18. Страт...
Статистика



Друзья сайта
Программы, игры


Полезно
В какую объединенную сеть входит классовая сеть? Суммирование маршрутов Занимают ли таблицы память маршрутизатора?