| Автор | Сообщение |
|
|
| постоянный участник
|
Пост N: 8068
Зарегистрирован: 12.09.06
|
|
Отправлено: 27.10.25 10:09. Заголовок: MiniGui + hbcurl
Сделал маленький пример который выдал Deep-Seek Скрытый текст
/* * MINIGUI - Harbour Win32 GUI library Demo * * Скачать файл с сайта / Download file from the website * + \contrib\hbcurl */ #define _HMG_OUTLOG #require "hbcurl" #include "hmg.ch" #include "hbcurl.ch" *********************************** FUNCTION Main LOCAL cUrl := "https://hmgextended.com/files/CONTRIB/hmg-25.10-setup.zip" LOCAL cFile := GetStartUpFolder() + "\hmg-25.10-setup.zip" SET WINDOW MAIN OFF // Использование DownloadFile(cUrl, cFile) RETURN NIL *********************************** PROCEDURE DownloadFile(cUrl, cLocalFile) LOCAL hCurl LOCAL cBuffer LOCAL nResult LOCAL hFile // Инициализация curl hCurl = curl_easy_init() IF hCurl != NIL // Настройка параметров curl_easy_setopt(hCurl, CURLOPT_URL, cUrl) curl_easy_setopt(hCurl, CURLOPT_FOLLOWLOCATION, 1) curl_easy_setopt(hCurl, CURLOPT_SSL_VERIFYPEER, 0) // Выполнение запроса cBuffer = curl_easy_exec(hCurl, @nResult) IF nResult == 0 .AND. !Empty(cBuffer) // Сохранение файла hFile = FCreate(cLocalFile) IF hFile != -1 FWrite(hFile, cBuffer) FClose(hFile) ? "Файл успешно скачан: " + cLocalFile ELSE ? "Ошибка создания файла" ENDIF ELSE ? "Ошибка загрузки: ", curl_easy_strerror(nResult) ENDIF curl_easy_cleanup(hCurl) ELSE ? "Ошибка инициализации CURL" ENDIF RETURN
| Сделал для него сборку - Скрытый текст
# Keys compile -prgflag=-w2 -es1 # Enable multi/single-thread Harbour VM -mt # Incremental-compilation mode -inc # folder where are all * .obj -workdir=OBJ # Name EXE-module -otest # to list all * .prg test.prg # paths to the main and extension *.Lib -lminigui -llibcurl
| Не собирается, выдаёт ошибки: Harbour 3.2.0dev (r2503200530) Copyright (c) 1999-2024, https://harbour.github.io/ test.prg(38) Warning W0001 Ambiguous reference 'CURLOPT_URL' test.prg(39) Warning W0001 Ambiguous reference 'CURLOPT_FOLLOWLOCATION' test.prg(40) Warning W0001 Ambiguous reference 'CURLOPT_SSL_VERIFYPEER' hbmk2[test]: Error: Running Harbour compiler (built-in). 1 И как собрать ? 
|
 |

|
|
Ответов - 84
, стр:
1
2
3
4
5
All
[только новые]
|
|
|
|
| |
Пост N: 8164
Зарегистрирован: 17.05.05
|
|
Отправлено: 28.10.25 13:54. Заголовок: У меня была проблема..
У меня была проблема с LibCurl последней 32 разрядной версии на Windows 11 который накатил обнову по безопасности свежую и после этого обмен по FTP через Curl сломался. WIN11 снес и поставил WIN10, последний ISO выкачивал с M$ , обновы все отключил, все работает через LIBCURL PS Возможно это поднасрал Dr.web, не уверен на 100 % , но когда я его поставил на 10 винду, тоже начались проблемы с LibCurl , снес паука
|
 |

|
|
|
| постоянный участник
|
Пост N: 8081
Зарегистрирован: 12.09.06
|
|
Отправлено: 28.10.25 13:54. Заголовок: Dima пишет: А что т..
Dima пишет: | цитата: | | А что там за архив MiniGui_23_12_9_TEST.7z и зачем он мне ? |
| Не знаю... Вообще то это сборка версии МиниГуи 23.12 + последние изменения в ТСБ. Хорошая сборка, я на ней всё делаю !
|
 |

|
|
|
| |
Пост N: 8165
Зарегистрирован: 17.05.05
|
|
Отправлено: 28.10.25 13:56. Заголовок: Andrey пишет: Не зн..
Andrey пишет: Это я тупанул )) Сергей кидал
|
 |

|
|
|
| постоянный участник
|
Пост N: 8083
Зарегистрирован: 12.09.06
|
|
Отправлено: 28.10.25 14:01. Заголовок: Andrey пишет: Тепер..
Andrey пишет: | цитата: | Теперь другая ошибка: Ошибка при загрузке файла: SSL connect error (35) Попробовал на другом сервере - работает, файл скачивается. |
| Что можно в примере подкрутить, чтобы на моём компе скачивался файл ? 
|
 |

|
|
|
| |
Пост N: 8166
Зарегистрирован: 17.05.05
|
|
Отправлено: 28.10.25 14:11. Заголовок: Andrey пишет: Что м..
Andrey пишет: | цитата: | | Что можно в примере подкрутить, чтобы на моём компе скачивался файл ? |
| Напомни плиз еще раз, мой консольный пример у тебя работает ? А твой пример скопипастенный под Минигуи не работает ? Я все верно изложил по вопросам ?
|
 |

|
|
|
| постоянный участник
|
Пост N: 8084
Зарегистрирован: 12.09.06
|
|
Отправлено: 28.10.25 14:19. Заголовок: Dima пишет: Напомни..
Dima пишет: | цитата: | Напомни плиз еще раз, мой консольный пример у тебя работает ? А твой пример скопипастенный под Минигуи не работает ? Я все верно изложил по вопросам ? |
| Да, твой пример работает. Мой пример работает на другом сервере и не работает у меня, выдаёт: Ошибка при загрузке файла: SSL connect error (35)
|
 |

|
|
|
| |
Пост N: 8167
Зарегистрирован: 17.05.05
|
|
Отправлено: 28.10.25 14:23. Заголовок: положил на фтп после..
положил на фтп последнюю версию (32 разряда) DLL Libcurl пробни с ней
|
 |

|
|
|
| |
Пост N: 8168
Зарегистрирован: 17.05.05
|
|
Отправлено: 28.10.25 14:24. Заголовок: и покажи свой сырец ..
и покажи свой сырец который у тебя не работает вот сюда в студию сложи его
|
 |

|
|
|
| постоянный участник
|
Пост N: 8085
Зарегистрирован: 12.09.06
|
|
Отправлено: 28.10.25 16:16. Заголовок: Dima пишет: и покаж..
Dima пишет: | цитата: | и покажи свой сырец который у тебя не работает вот сюда в студию сложи его |
| Andrey пишет: | цитата: | | Положил к тебе в папку у Сергея пример. |
| Я уже весь проект к тебе положил.
|
 |

|
|
|
| |
Пост N: 8171
Зарегистрирован: 17.05.05
|
|
Отправлено: 28.10.25 16:28. Заголовок: Andrey пишет: Я уже..
Andrey пишет: | цитата: | | Я уже весь проект к тебе положил. |
| я его убил 
|
 |

|
|
|
| постоянный участник
|
Пост N: 4850
Зарегистрирован: 17.02.12
|
|
Отправлено: 28.10.25 16:49. Заголовок: Тут собрал от Димы п..
|
 |

|
|
|
|
|
| |
Пост N: 8172
Зарегистрирован: 17.05.05
|
|
Отправлено: 28.10.25 16:49. Заголовок: SergKis пишет: Тут ..
SergKis пишет: улучшалку кинул в личку
|
 |

|
|
|
| постоянный участник
|
Пост N: 8087
Зарегистрирован: 12.09.06
|
|
Отправлено: 28.10.25 17:33. Заголовок: Понял в чём дело. Мо..
Понял в чём дело. Мой пример начинает скачивать файл, а это долго и висит. Так как не выводил никакой диагностики, то не увидев результата - запускал ещё раз. Из-за этого и получал ошибку. Сделал пример так: Скрытый текст
FUNCTION Main LOCAL cUrl := "https://hmgextended.com/files/CONTRIB/hmg-25.10-setup.zip" LOCAL cFile := GetStartUpFolder() + "\hmg-25.10-setup.zip" LOCAL tStart := HB_DateTime() SET WINDOW MAIN OFF WaitWindow( {cUrl, cFile}, .T., 400, 16, NIL, YELLOW, BLUE ) ? "Start ======", tStart ? cUrl ? cFile // Использование Curl_downloadFile(cUrl, cFile) ? WaitWindow() ? "Stop ======", HMG_TimeMS(tStart) RETURN NIL *********************************** PROCEDURE Curl_downloadFile(cUrl, cOutputFile) LOCAL hCurl, nErr curl_global_init() // Инициализация curl hCurl = curl_easy_init() IF Empty(curl) ? "Не удалось инициализировать cURL" RETURN ENDIF curl_easy_reset( hCurl ) curl_easy_setopt( hCurl, HB_CURLOPT_SSL_VERIFYPEER, 0) // игнорить SSL серты curl_easy_setopt( hCurl, HB_CURLOPT_DOWNLOAD ) curl_easy_setopt( hCurl, HB_CURLOPT_URL, cUrl ) // откуда скачиваем - адрес сайта curl_easy_setopt( hCurl, HB_CURLOPT_FOLLOWLOCATION, .t.) // учитывать редиректы curl_easy_setopt( hCurl, HB_CURLOPT_FAILONERROR,.t.) // выдать ошибку если не качнулось curl_easy_setopt( hCurl, HB_CURLOPT_DL_FILE_SETUP, cOutputFile ) //curl_easy_setopt( hCurl, HB_CURLOPT_PROGRESSBLOCK, {| nPos, nLen | FtpGag(npos/nlen) }) curl_easy_setopt( hCurl, HB_CURLOPT_NOPROGRESS, 0 ) // Выполняем запрос nErr := curl_easy_perform(hCurl) IF nErr == HB_CURLE_OK ? "Файл успешно скачан:", cOutputFile ELSE ? "Ошибка при загрузке файла:" ?? curl_easy_strerror(nErr)+' (' + hb_ntos(nErr) + ')' ENDIF curl_easy_cleanup(hCurl) RETURN
| Пример работает, но медленно - вот что пишет в логе: Start ====== 2025-10-28 17:17:58.664 https://hmgextended.com/files/CONTRIB/hmg-25.10-setup.zip D:\@Sync-Artyom\_MiniGui\CUrl-libcurl\hmg-25.10-setup.zip STOP - нету !!! 1) Почему так медленно, можно ли ускорить ? 2) Можно ли на титул окна WaitWindow() которое на панели задач - выводить надпись и процент скачки ? 
|
 |

|
|
|
| |
Пост N: 8175
Зарегистрирован: 17.05.05
|
|
Отправлено: 28.10.25 17:35. Заголовок: Andrey пишет: вывод..
Andrey пишет: | цитата: | | выводить надпись и процент скачки |
| да это делают в HB_CURLOPT_PROGRESSBLOCK
|
 |

|
|
|
| |
Пост N: 8176
Зарегистрирован: 17.05.05
|
|
Отправлено: 28.10.25 17:37. Заголовок: Andrey пишет: Почем..
Andrey пишет: вероятно надо с этим поиграть HB_CURLOPT_BUFFERSIZE но это не точно 
|
 |

|
|
|
| постоянный участник
|
Пост N: 4851
Зарегистрирован: 17.02.12
|
|
Отправлено: 28.10.25 17:43. Заголовок: Dima пишет надо с эт..
Dima пишет | цитата: | | надо с этим поиграть HB_CURLOPT_BUFFERSIZE |
| поиграл, но мало что дает или не так ставлю curl_easy_setopt( curl, HB_CURLOPT_DL_FILE_SETUP, tmpdir+cfile ) curl_easy_setopt( curl, HB_CURLOPT_BUFFERSIZE, 128 * 1024 ) получил результат в лог на варианты 8K, 16K, 32K ... .T. 8K Sec. 11.00 .T. 16K Sec. 15.51 .T. 32K Sec. 11.34 .T. 64K Sec. 12.59 .T. 128K Sec. 11.36 без строки //curl_easy_setopt( curl, HB_CURLOPT_BUFFERSIZE, ...) дает в лог Sec. 31.67 смысл ставить HB_CURLOPT_BUFFERSIZE есть
|
 |

|
|
|
| |
Пост N: 8177
Зарегистрирован: 17.05.05
|
|
Отправлено: 28.10.25 17:53. Заголовок: пробнул так curl_eas..
пробнул так curl_easy_setopt(curl,HB_CURLOPT_DL_BUFF_SETUP,512 * 1024) 2 мегабайта в сек тянет или я уже не то копаю ЗЫ Бедный сервер hmgextended.com, мы его замучаем сегодня Полигон из него устроили 
|
 |

|
|
|
| |
Пост N: 8178
Зарегистрирован: 17.05.05
|
|
Отправлено: 28.10.25 18:11. Заголовок: curl_easy_setopt(cur..
curl_easy_setopt(curl,HB_CURLOPT_DL_BUFF_SETUP,1024 * 1024) curl_easy_setopt( curl, HB_CURLOPT_PROTOCOLS, HB_CURLPROTO_HTTPS ) добавил , быстро залетело
|
 |

|
|
|
| |
Пост N: 2013
Зарегистрирован: 20.02.11
|
|
Отправлено: 28.10.25 19:42. Заголовок: Dima пишет: быстро ..
Dima пишет: возможно кеш сработал с двух сторон. Скорее всего нужно имитировать многопоточку. Через курл как то получить размер, поделить на части и используя hb_curlopt_range тянуть в потоках в отдельные файлы и потом клеить . Пысы : спросил глубокого искателя он так же говорит, даже код нарисовал, но мы знаем какой он фантазёр,..
|
 |

|
|
|
| |
Пост N: 8179
Зарегистрирован: 17.05.05
|
|
Отправлено: 28.10.25 19:52. Заголовок: Haz пишет: но мы зн..
Haz пишет: | цитата: | | но мы знаем какой он фантазёр |
| 100 % 
|
 |

|
|
Ответов - 84
, стр:
1
2
3
4
5
All
[только новые]
|
|