Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.03.2011, 18:06   #1
Xardas
Сисадмин
Форумчанин
 
Аватар для Xardas
 
Регистрация: 28.12.2007
Сообщений: 320
По умолчанию Загрузка файла из интернета с компа, не имеющего "прямого" выхода

Доброго времени суток, уважаемые участники форума!

В одном проекте есть необходимость постоянного чтения данных с интернет-сервера (постоянно обновляемые массивы числовых данных), увы, к своему сожалению, первый раз пришлось столкнуться с сетями и разбираться с задачами "налету". Чтение я осуществляю путем загрузки в файл, его обработки и удаления. Все работало отлично на разных компах, пока не пришла необходимость использования программы с компа, который через WLAN соединен с другим компом, имеющий выход в интернет через роутер. В итоге при попытке загрузки файлов вылетает ошибка I/O. Программа эта использовалась на разных компах, но все их объединял "прямой" выход в интернет, потому у меня предположение, что использованный способ загрузки не может работать в описанной выше сети. Использовал я следующий способ:

Код:
hInternet := InternetOpen(nil, INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
  hFile := InternetOpenUrl(hInternet, pchar(fileURL), nil, 0,
  INTERNET_FLAG_EXISTING_CONNECT, 0);
  if hFile <> nil then
   begin
    InternetQueryDataAvailable(hFile, Size, 0, 0);
    GetMem(DataBuff, Size);
    InternetReadFile(hFile, DataBuff, Size, Bytes);
    hOut := CreateFile(pchar(FileName), GENERIC_WRITE, 0, nil, CREATE_NEW, 0, 0);
    if hOut <> INVALID_HANDLE_VALUE then
     begin
      WriteFile(hOut, DataBuff^, Size, Bytes, nil);
      CloseHandle(hOut);
     end;
    FreeMem(DataBuff);
    InternetCloseHandle(hFile);
   end;
  InternetCloseHandle(hInternet);
Скажите, пожалуйста, действительно невозможен данный способ загрузки через сеть? И куда копать? Поможет ли мне Indy, если да, то тоже куда копнуть? Так вот сложилось, что не работал никогда с сетью глубоко. Помогите, пожалуйста, направьте на путь истинный.

И возникший побочный вопрос: возможно ли читать с интернета файл, не загружая всего файла в поток или как я на диск (вид: ''http://URL/file.txt")?

ЗЫ Использовалась программа почти в 20 разных местах и дала сбой только в месте с такой организацией сети. Направьте к истине, пожалуйста
Xardas вне форума Ответить с цитированием
Старый 29.03.2011, 18:17   #2
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

Вероятней всего в дан.случае клиентский хост имеет право ходить в тырнет только через прокси-сервер. Слкдует воспользоваться прокси-ф-циями в составе wininet
Цитата:
Поможет ли мне Indy
Поможет, но геморроя с ним немногим меньше чем с WinInet
Настоятельно рекомендую воспользоваться свободно распрростроняемой библ-кой Synapse
mss вне форума Ответить с цитированием
Старый 30.03.2011, 18:02   #3
Xardas
Сисадмин
Форумчанин
 
Аватар для Xardas
 
Регистрация: 28.12.2007
Сообщений: 320
По умолчанию

mss, спасибо. С Synapse проблема решилась!
Xardas вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кроме "огнелисы" ни один браузер не видит интернета Web-Gangsta Свободное общение 4 03.03.2010 11:24
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04
Считывание строк из файла. перемещение по строкам "веред"-"назад" Larkin. Помощь студентам 2 15.06.2009 17:58
"из прямого кода в дополнительный" (с++) Olya90 Помощь студентам 3 11.05.2009 20:26
Программка: "из прямого кода в дополнительный" (с++) Olya90 Помощь студентам 3 27.04.2009 09:45