On-line: Andrey, PSP, SergKis, гостей 0. Всего: 3 [подробнее..]
АвторСообщение



Пост N: 65
Зарегистрирован: 02.07.12
ссылка на сообщение  Отправлено: 25.03.17 18:45. Заголовок: HBCURL


Dima пишет:

 цитата:
Вот и все непонятки закончились после того как убил кучу времени.
У DownloadFile проблема с длинными именами файлов , при чем в UploadFile этой проблемы нет.
Не важно каков размер файла , важна для него длина имени файла.
Прошу опровергнуть или подтвердить описанное поведение DownloadFile.


Добрый день. У меня точно такая же проблема нарисовалась в моей программе, как описывает Дима. Программа на отрез не хочет принимать с фтп длинные имена файлов.
точь в точь как в этой теме http://clipper.borda.ru/?1-4-0-00000844-000-10001-0
Удалось ли Вам побороть данную проблему.? Как вышли из ситуации?
Хочу перейти на HBCURL, но нужно описание всех функций, особенно получение списка файлов с фтп-сервера по маске и скачивание файлов с сервера.
Поделитесь своими наработками пожалуйста.

П.С. Вот кусок программы, в котором я пытаюсь скачать файлики с сервера, список получаю, а вот файл /файлы / скачать не удается...
Скрытый текст


Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 65 , стр: 1 2 3 4 All [только новые]


администратор




Пост N: 6339
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 25.03.17 22:39. Заголовок: Eduard Забил я на H..


Eduard
Забил я на HBCURL...
Делаю все с помощью HBTIP , но есть непонятки с рядом провайдеров , точно как описано и у вас.
В основном все работает нормально , НО есть не понятные провы у которых все глючит.....и хз почему.
К одному как то обратились , оказалось он там какие то IP и DNS сцука не верно настроил , апосля
перенастройки все заработало нормально.

PS
Как вариант можно пробнуть консольный вариант CURL
Линк дам.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 66
Зарегистрирован: 02.07.12
ссылка на сообщение  Отправлено: 25.03.17 23:09. Заголовок: Dima пишет: Как вар..


Dima пишет:

 цитата:
Как вариант можно пробнуть консольный вариант CURL


Спасибо, не надо, есть у меня.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 341
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 26.03.17 11:12. Заголовок: Я использую связь че..


Я использую связь через функции из стандартной библиотеки Windows wininet.dll

С приёмом-передачей файлов с длинными именами проблемы нет - использую только такие
пример : 04231e1ae.20160615.60453.ready (ID-компьютера.дата.время.статус)

Дату+время записываю в имя файла именно по причине какого-то глюка - сервер не всегда дату правильно отдаёт .... а это важно - например отчет о продаже .

Вот примерно часть кода по приёму файла с FTP :

hLib := LOADLIBRARY( "wininet.dll" ) // Используем "штатную" библиотеку Windows


// открыли "интернет" + сделали соединение с FTP-сервером
hInternet = INETOPEN( "Anystring", INTERNET_OPEN_TYPE_DIRECT, 0, 0, 0 )
hConnect = INETCONNECT( hInternet, Имя_сервера_FTP, INTERNET_DEFAULT_FTP_PORT, Имя_пользователя_FTP, Пароль_FTP, INTERNET_SERVICE_FTP,INTERNET_FLAG_PASSIVE , 0 )


FTPGETFILE( hConnect,'request/ORDERS/'+(Имя_Скачиваемого_файла),System.Tempfolder+'\'+(имя_файла), 0, FILE_ATTRIBUTE_ARCHIVE, 0, 0 )

InetCloseHandle( hConnect) && закрыли соединение с сервером
InetCloseHandle( hInternet) && закрыли соединение с Интернет

Если нужно более развернуто - сообщай .

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 67
Зарегистрирован: 02.07.12
ссылка на сообщение  Отправлено: 26.03.17 13:16. Заголовок: Softlog86 пишет: Ес..


Softlog86 пишет:

 цитата:
Если нужно более развернуто - сообщай


Да, нужно. Взято отсюда? http://forums.fivetechsupport.com/viewtopic.php?f=3&t=23075 Там в принципе все понятно, только не понятно с этой функцией по получению списка файлов, особенно данный фрагмент текста
Скрытый текст

Больше всего меня интересует получение файлов по маске, и потом скачивание их всех вместе за один раз.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 343
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 26.03.17 13:43. Заголовок: получение списка фай..


скачиваю файлы по-одному , оказалось что время скачивания что группой что по одиночке почти одинаковое .
Тем более что мне в процессе скачивания мне нужно ещё что-то с ними делать ....

получение списка файлов по маске :
function ftpDIR(cKAT, Mask)

//*******************************************************************************
//
// создаём массив имён файлов из cKAT/ для маски MASK на сервере обновлений .....
// возвращаем МАССИВ {имя , дата}
//
//*******************************************************************************

Local cUrl


cUrl := "ftp://" + Alltrim( FTPUSERNAME )+":"+ Alltrim(FTPpassword ) +"@"+ alltrim(FTP_SERVER_NAME)

oUrl := tURL():New( cUrl ) //
IF Empty( oUrl )
return nil
endif
oClient := TIpClientFtp():new( oUrl, .F. )
IF Empty( oClient ) ; return nil ; endif
oClient:nConnTimeout := 15000 // // Временем можно поиграть ...
oClient:bUsePasv := .T.



IF At( "@", FTPUSERNAME ) > 0
oClient:oUrl:cServer := FTP_SERVER_NAME
oClient:oUrl:cUserID := FTPUSERNAME
oClient:oUrl:cPassword := FTPPassword
ENDIF


IF oClient:Open()
IF Empty( oClient:cReply )
oClient:Pasv()
ELSE
oClient:Pasv()
ENDIF
arFILES:={}


arFILES:=FTPFILLDATETIME(cKAT, Mask ,oClient) // заполняем нужной информацией

ELSE
msgalert('Нет связи с сервером '+FTP_SERVER_NAME ,'Ошибка !')
arFILES:={}
ENDIF


oClient:CLOSE()


return aRFILES


FUNCTION FtpFillDateTime(Katalog,cMask,oClient)

LOCAL ctext, cSepChar, nPos, acDir, cLine, x, avalues, xpesq, xpos, cvalue, cvalue1 , aRET:={},a:={}

LOCAL i

clret:= oClient:PWD
cpath := oClient:cReply
cfolder:=cpath+"/"+KATALOG
oClient:CWD(cfolder)

a := oClient:Listfiles(cMask)
oClient:reset()

If LEN(a)>0
FOR i:=1 TO LEN(a)

// { Файл.C , Дата.D , Время.C }
// Коррекция времени ! TimEcorrection - так как на сервере идёт своё время ...... - прибавляем TimeCorrectionI (число секунд)
Z:=SECTOTIME(TIMETOSEC(a[i,4])+TimeCorrectionI)

AADD(aRET,{a[i,1] , a[i,3] , Z } )

NEXT i
ENDIF

// Возвращаем массив с { имя , дата , время } )

RETURN aRET



Спасибо: 1 
ПрофильЦитата Ответить
администратор




Пост N: 6340
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 26.03.17 14:44. Заголовок: Eduard пишет: STRUC..


Eduard пишет:

 цитата:
STRUCT oWin32FindData


Это надо прицепить из FW
source\classes\tstruct.prg
include\struct.ch


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 68
Зарегистрирован: 02.07.12
ссылка на сообщение  Отправлено: 26.03.17 15:05. Заголовок: В какой библиотеке н..


В какой библиотеке находиться функция LoadLibrary кто знает? Компилятор MinGw дает ошибку при этапе линковки программы
Скрытый текст


Скрытый текст


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 344
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 26.03.17 15:17. Заголовок: Eduard в файле ...


Eduard

в файле .HBC Вашего проекта нужно добавить строчку :
libpaths=c:\borland\bcc55\lib;c:\borland\lib\PSDK;

Ну или как-то по-другому подключить ....

Вроде как LOADLIBRARY() лежит в
c:\borland\lib\PSDK\kernel32.lib


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6341
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 26.03.17 15:19. Заголовок: Eduard Кажись это F..


Eduard
Кажись это FW
source\winapi\dll.c

Можно пробнуть hb_DynCall

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6342
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 26.03.17 15:20. Заголовок: Softlog86 пишет: li..


Softlog86 пишет:

 цитата:
libpaths=c:\borland\bcc55\lib;c:\borland\lib\PSDK;


У него MINGW

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 345
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 26.03.17 15:29. Заголовок: Тогда понятно ......


Тогда понятно ....

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1400
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 26.03.17 19:43. Заголовок: Eduard пишет В какой..


Eduard пишет
 цитата:
В какой библиотеке находиться функция LoadLibrary


MiniGui\SOURCE\Dll\_windll.c
там есть


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 69
Зарегистрирован: 02.07.12
ссылка на сообщение  Отправлено: 26.03.17 19:47. Заголовок: Softlog86 пишет: h..


Softlog86 пишет:

 цитата:

hConnect = INETCONNECT( hInternet, Имя_сервера_FTP, INTERNET_DEFAULT_FTP_PORT, Имя_пользователя_FTP, Пароль_FTP, INTERNET_SERVICE_FTP,INTERNET_FLAG_PASSIVE , 0 )


Где можно посмотреть описания вот этих переменных что выделены жирным? есть какой ch-файл?
Есть команда, для перехода в каталог, типа CWD?

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 346
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 26.03.17 21:33. Заголовок: Да , CWD () выбор д..


Да , CWD () выбор директории


Старая школа ещё помнит что такое 21-й порт :)



#define FILE_ATTRIBUTE_ARCHIVE 128
#DEFINE FTP_TRANSFER_TYPE_UNKNOWN 0
#DEFINE FTP_TRANSFER_TYPE_ASCII 1
#DEFINE FTP_TRANSFER_TYPE_BINARY 2
#define INTERNET_INVALID_PORT_NUMBER 0 // use the protocol-specific default
#DEFINE INTERNET_DEFAULT_FTP_PORT 21 // ' порт по умолчанию для FTP серверов
#define INTERNET_DEFAULT_GOPHER_PORT 70 // " " gopher "
#define INTERNET_DEFAULT_HTTP_PORT 80 // " " HTTP "
#define INTERNET_DEFAULT_HTTPS_PORT 443 // " " HTTPS "
#define INTERNET_DEFAULT_SOCKS_PORT 1080 // default for SOCKS firewall servers.
#DEFINE INTERNET_SERVICE_FTP 1
#define INTERNET_SERVICE_GOPHER 2
#define INTERNET_SERVICE_HTTP 3
#DEFINE INTERNET_FLAG_PASSIVE 134217728 // used for FTP connections

#DEFINE INTERNET_OPEN_TYPE_PRECONFIG 0 // Use registry configuration
#DEFINE INTERNET_OPEN_TYPE_DIRECT 1 // direct to net
#DEFINE INTERNET_OPEN_TYPE_PROXY 3 // via named proxy
#DEFINE INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY 4 // prevent using java/script/INS


Спасибо: 1 
ПрофильЦитата Ответить
администратор




Пост N: 6344
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 27.03.17 14:03. Заголовок: Eduard По поводу фу..


Eduard
По поводу функций wininet
https://searchcode.com/codesearch/view/4487644/

Спасибо: 1 
ПрофильЦитата Ответить



Пост N: 70
Зарегистрирован: 02.07.12
ссылка на сообщение  Отправлено: 27.03.17 16:41. Заголовок: Dima пишет: По пово..


Dima пишет:

 цитата:
По поводу функций wininet
https://searchcode.com/codesearch/view/4487644/



Спасибо, пригодиться. Вчера на скорую руку закончил проект, но надо еще внести пару правок в программу, т.к. сроки на работе поджимают.
Есть возможность добавить ПрогрессБар к функции для приема/передачи файлов, что-то такое похожее на это?:
Когда был HBTip то функция работала.

Скрытый текст


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6345
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 27.03.17 21:25. Заголовок: Eduard Это ведь Мин..


Eduard
Это ведь Минигуи если я верно понял.
Что то мне кажется что юзая функции "wininet.dll" не получится сделать ПрогрессБар (возможно ошибаюсь)
Поэтому вижу варианты:
1. Повесить в окне "крутилку" , примеры есть
2. Заюзать AVI файл , типа как для копирования
3. Вывесить типа WAIT окна , "Ждите"
4. Повесить ПрогрессБар как в винде 10 , он бегает тудым сюдым
И по ходу если файлы по размерам не очень большие , то и смысла нет что то вешать.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 347
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 27.03.17 21:51. Заголовок: Дима верно всё говор..


Дима верно всё говорит . Поэтому я и передаю файлы по-одиночке и завязываю это событие на прогресс-бар .
(Поди не Дуал-ап - Интернет ? ) Моих юзеров при всяких операциях с фтп-приемом-передачей задержки не напрягают . На уровне открытия тяжелой страницы сайта . Да и их в это время можно чем-то занять (см Дима ) :)
Большие , даже огромные , dbf файлы зипуются в очень компактную пачку . В любом случае передача быстрая . Для очень больших файлов есть смысл предусмотреть контроль полученного файла хотя-бы на уровне размера .

Ох уж эта вредная привычка еще с CLIPPERовских времён всё экономить : память , размеры полей , "чтоб всё летало" :)

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 71
Зарегистрирован: 02.07.12
ссылка на сообщение  Отправлено: 27.03.17 22:15. Заголовок: Dima пишет: И по хо..


Dima пишет:

 цитата:
И по ходу если файлы по размерам не очень большие , то и смысла нет что то вешать.


Да, файлики не большие от 5 кб. и до 100-120 кб. в редких случаях до 200. Все дело в том, что там где данная программа используется очень плохие каналы связи,
стоят модемы от Укртелекома АДСЛ корпоративный канал до 128 - 512 кб/с. В основном скорость 128 кб./с Хотелось бы видеть процесс закачки.
п.с. Предприятие ПАТ "Укрпошта", вот такие каналы стоят в отделениях свази.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 72
Зарегистрирован: 02.07.12
ссылка на сообщение  Отправлено: 27.03.17 22:18. Заголовок: Eduard пишет: Для о..


Eduard пишет:

 цитата:
Для очень больших файлов есть смысл предусмотреть контроль полученного файла хотя-бы на уровне размера .


Да такое у меня предусмотрено, идет проверка на контрольную сумму, crc посредством фтп-сервера.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1076
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 27.03.17 22:30. Заголовок: Dima пишет: о то мн..


Dima пишет:

 цитата:
о то мне кажется что юзая функции "wininet.dll" не получится сделать ПрогрессБар (возможно ошибаюсь)


Возможно и ошибаешься)))
https://www.google.ru/url?sa=t&source=web&rct=j&url=https://msdn.microsoft.com/ru-ru/library/windows/desktop/aa385120

Пишу "возможно" тк сам не пробовал, но какой лопатой рыть и куда, уже ясно

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6346
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 27.03.17 22:47. Заголовок: Haz пишет: Пишу &#..


Haz пишет:

 цитата:

Пишу "возможно" тк сам не пробовал


Аналогично

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 348
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 28.03.17 13:48. Заголовок: тем более если файли..


тем более если файлики маленькие , зачем прогресс-бар ?
Ставить прогресс на всю очередь и делу конец .
Даже по диал-апу 50к/б файл зальётся за секунду

Эдуард , получилось из наших советов что хотел ?

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 73
Зарегистрирован: 02.07.12
ссылка на сообщение  Отправлено: 28.03.17 19:12. Заголовок: Softlog86 пишет: Эд..


Softlog86 пишет:

 цитата:
Эдуард , получилось из наших советов что хотел ?


Да, все работает.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 687
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 05.04.17 18:24. Заголовок: Eduard Да, все рабо..


Eduard

 цитата:
Да, все работает.



А как бы поделится самодостаточным необльшим примером,
а то материалов по этой теме не густо.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 74
Зарегистрирован: 02.07.12
ссылка на сообщение  Отправлено: 05.04.17 22:07. Заголовок: Да, без проблем, вот..


Да, без проблем, вот процедура из моей программы:


Скрытый текст



Ну и собственно, сами функции для работы с ФТП-сервером
Объявления переменных в главной программе
Скрытый текст



Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 5
Зарегистрирован: 09.11.06
ссылка на сообщение  Отправлено: 25.04.17 12:12. Заголовок: Как сменить директорию?


Подскажите как в hbcurl при подключении по ftp, сменить директорию.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6387
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 25.04.17 13:58. Заголовок: Gosha Наверное так ..


Gosha
Наверное так
curl_easy_setopt( curl, HB_CURLOPT_URL, cDL )
где cDL твоя "дорога"

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 6
Зарегистрирован: 09.11.06
ссылка на сообщение  Отправлено: 25.04.17 14:48. Заголовок: Dima, не выходит


При попытке сделать, например:
curl_easy_setopt( curl, HB_CURLOPT_URL, "ftp://user:pass@192.168.1.1/home/MOJCATALOG/mojfailik.txt" )
я поподаю не в /home/MOJCATALOG/, а в /home/user/.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6388
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 25.04.17 14:56. Заголовок: Gosha Логин и пасс ..


Gosha
Логин и пасс вроде отдельно задаются
HB_CURLOPT_USERNAME
HB_CURLOPT_PASSWORD
или
HB_CURLOPT_USERPWD

примерчик

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 7
Зарегистрирован: 09.11.06
ссылка на сообщение  Отправлено: 25.04.17 16:52. Заголовок: Dima вопрос не в этом


В примере hbcurl - ftp_uldl.prg логинятся и так "ftp://harbour:power@localhost/". Но вопрос не в этом, логинюсь я номально (лог сервера подтверждает), а вот как мне перейти в другой каталог? т.е. как сделать cd /?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6389
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 25.04.17 17:27. Заголовок: Gosha Можно погугли..


Gosha
Можно погуглить например.
https://ec.haxx.se/ftp-traversedir.html

Или обратить внимание на это
#define HB_CURLFTPMETHOD_DEFAULT 0 /* let libcurl pick */
#define HB_CURLFTPMETHOD_MULTICWD 1 /* single CWD operation for each path part */
#define HB_CURLFTPMETHOD_NOCWD 2 /* no CWD at all */
#define HB_CURLFTPMETHOD_SINGLECWD 3 /* one CWD to full dir, then work on file */

PS
Возможно я ошибаюсь...

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7290
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 26.03.21 22:27. Заголовок: Простой вопрос есть ..


Простой вопрос есть , вроде.
Хочу сделать так что бы моя программа если при запуске
обнаруживает libcurl.dll тогда FTP запросы у меня работают
через HBCURL , если не находит то работаем через HBTIP.
Реализовать это все я смогу.
Но есть проблема , программа при запуске сразу вылетает
если не находит libcurl.dll , хотя первой строкой идет обычный WAIT "test"
Как то можно это побороть ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1626
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 26.03.21 23:26. Заголовок: Dima пишет: Простой..


Dima пишет:

 цитата:
Простой вопрос есть , вроде.



Вопрос простой, ответ не очень.

Вот здесь вы найдете причину вылета.
А вот решите ли проблему..

А статически прилинковывать libcurl
set HB_STATIC_CURL=yes
не пробовали?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7291
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 27.03.21 00:19. Заголовок: Петр пишет: А стати..


Петр пишет:

 цитата:
А статически прилинковывать libcurl
set HB_STATIC_CURL=yes
не пробовали?


С таким SET не собирается )
 
Compiling 'ftp_uldl.PRG'...
Lines 372, Functions/Procedures 3
Generating C source output to 'obj\ftp_uldl.c'... Done.
C:/MinGW12/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -lssh2
collect2.exe: error: ld returned 1 exit status
hbmk2[msklad]: Error: Running linker. 1


Почитал еще у Кресина и заюзал опции hbmk2
-shared
-hbdynvm
Собралось приложение но при запуске пишет что оно не приложение WIN32 ))

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7292
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 27.03.21 00:39. Заголовок: Хотел юзать LIBCURL...


Хотел юзать LIBCURL.DLL примерно так
hLib := hb_LibLoad( "LIBCURL.DLL" )
**********
тут поюзали
---------
hb_LibFree( hLib )

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1630
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 27.03.21 00:40. Заголовок: Dima пишет: С таким..


Dima пишет:

 цитата:
С таким SET не собирается )


С этой опцией должен собираться libcurl
set HB_STATIC_CURL=yes

Dima пишет:

 цитата:
Почитал еще у Кресина и заюзал опции hbmk2
-shared
-hbdynvm


shared это для работы с harbour.dll
а hbdynvm - create dynamic library (with linked Harbour VM),
можно использовать в программах на C, PASCAL и пр.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1631
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 27.03.21 00:48. Заголовок: И еще из hbcurl.hbc ..


И еще из hbcurl.hbc
# NOTE: Static mode requires additional libs be linked:
# OpenSSL

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7293
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 27.03.21 01:02. Заголовок: Петр пишет: С этой ..


Петр пишет:

 цитата:
С этой опцией должен собираться libcurl
set HB_STATIC_CURL=yes


Да тупанул , с ней и собрано

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7294
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 27.03.21 01:24. Заголовок: Собственно после сбо..


Собственно после сборки получил 3 либы
libhbcurl.a
libhbcurls.a
liblibcurl.a
Приложение собираю батником
 
set path=C:\MinGW\bin\
c:\hb32mingw\bin\hbmk2 test.hbp


содержимое test.hbp
 
C:\hb32mingw\contrib\hbcurl\hbcurl.hbc
-workdir=obj
-otest.exe
-std
mytest.PRG

Прога при запуске сразу хочет libcurl.dll и не стартует (если его нет) а хотелось бы рученятами
когда нужно то грузить этот DLL и после использования выгружать.
Не пойму как это сделать и возможно ли вообще , вот вопрос ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1634
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 27.03.21 01:40. Заголовок: Я давно не собирал l..


Я давно не собирал libcurl.dll и программ с его использованием соответственно.
Попробую найти время и посмотреть.

Это сделать можно, вот вариант решения
Другое дело можно ли это сделать для mingw и какие телодвижения нужно совершить для этого

А чем не устраивает hbtip или curl, если он с 10-й действительно поставляется?
Просто интересно

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7295
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 27.03.21 11:57. Заголовок: Петр С DelayLoad хо..


Петр
С DelayLoad хорошее решение
Но такой фичи похоже нет в MINGW , что печально.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7296
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 27.03.21 12:13. Заголовок: Петр пишет: А чем н..


Петр пишет:

 цитата:
А чем не устраивает hbtip или curl, если он с 10-й действительно поставляется?


Hbtip устраивает но у ряда провайдеров UPLOAD/DOWNLOAD (особенно последний) глючит
по FTP и не докачивает файлы , хотя фтп-сервер один и тот же.
Игрался с CURL.EXE у таких провов и FTP , вот с ним нет проблем.
Если с LIBCURL.DLL не получится как задумал , возможно придется юзать CURL.EXE
Спасибо

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 388
Зарегистрирован: 12.11.06
ссылка на сообщение  Отправлено: 29.03.21 10:08. Заголовок: Если устроит "ко..


Если устроит "колхозное" решение - стал применять, обнаружив, что не закачиваются на ftp файлы с длинными именами, а именно УПД

 
aFiles := Directory(_OUTBOX+cShab+"*.xml")
aBin := Directory(_OUTBOX+cShab+"*.bin")
nLen := Len(aFiles)
IF nLen <= 0 THEN RETU // Выход при отсутствии файлов для сохранения на FTP

// Отключена технология моей работы с FTP. Попытка открытия канала и при отказе выход из режима
oFtp := TIpClientFtp():new( _ZFTP ) // Создаю экземпляр класса объекта
IF !oFtp:open() THEN RETU

//*** Штатные средства не умеют работать с длинными именами файлов, как у УПД - делаю через жопу
IF cShab == "ON_"

// 04.12.2020 Оставляю технику без изменений - добавив в условие удаление из OUTBOX == не проверяю успешность отправки
oFtp:close() // Закрываю канал - соединение
FOR nI := 1 TO nLen
cW := "wwput.bat "+_OUTBOX+" "+aFiles[nI,1]+" "+FTP_OUTBOX
RUN &cW
NEXT nI

// Для некоторых КА могут быть и файлы подписи. Анализирую и отправляю
nBin := Len(aBin)
FOR nI := 1 TO nBin
cW := "wwput.bat "+_OUTBOX+" "+aBin[nI,1]+" "+FTP_OUTBOX
RUN &cW
NEXT nI

// 04.12.2020
FOR nI := 1 TO nLen DO FileDelete( _OUTBOX+aFiles[nI,1] )
FOR nI := 1 TO nBin DO FileDelete( _OUTBOX+aBin[nI,1] )

ELSE // Старые документы и УПД от Э-КОМ сохраняю средствами программы без "моргания"



где wwput.bat

wput.exe -u --reupload %1%2 ftp://name:password@adress_ftp.ru/%3/%2

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7306
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 01.04.21 09:04. Заголовок: Потестил HBCURL. В п..


Потестил HBCURL.
В программе доступ с HBTIP переписал под HBCURL для доступа к FTP.
Глюков нет , работает шустро и стабильно
Так что для доступа к FTP , это отличный выбор.

PS
Проблемы со скобками в именах файлов и символом # , решены.
То что лишний DLL надо с собой таскать не проблема и так тягаю DLL от ADS и PageScript

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3684
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 02.04.21 10:36. Заголовок: Dima пишет Так что д..


Dima пишет
 цитата:
Так что для доступа к FTP , это отличный выбор.


Поделиться примерчиком можешь ?
Сюда или сам знаешь куда.
Я не осилил по времени, curl.exe с ftp опробовал и вернулся к hbtip (от примера, т.к. время поджимало)

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7311
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 02.04.21 10:58. Заголовок: SergKis пишет: Поде..


SergKis пишет:

 цитата:
Поделиться примерчиком можешь ?


Да подготовлю

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7312
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 02.04.21 12:56. Заголовок: По быстрому , на кол..


По быстрому , на коленке.
Скрытый текст



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3687
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 02.04.21 14:04. Заголовок: Dima пишет По быстро..


Dima пишет
 цитата:
По быстрому , на коленке.


Спасибо Буду разбираться

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7313
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 02.04.21 16:35. Заголовок: SergKis Есть тонкос..


SergKis
Есть тонкость с HB_CURLOPT_UPLOAD и заливкой файла на FTP.
Даже если curl_easy_perform уже отработал , локально заливаемый
файл остается залоченным самим CURL , пока не сделаем curl_easy_reset
или curl_easy_cleanup

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7334
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 01.05.21 16:35. Заголовок: У одного клиента моб..


У одного клиента мобильный инет Киевстар.
Иногда при попытке подключения к FTP и получения LIST
получаю ошибку CURLE_OPERATION_TIMEDOUT (28)
Версия LibCurl 7.76.0
Смотрел логи FTP сервера , там все красиво , ни каких ошибок.
Таймауты я не трогал. Погуглил , но решения не нашел.
Не понятно как решить проблемку.............

PS
У всех остальных у кого нормальный инет (не мобильный) такого не возникало

Возможно (не уверен) 7.76.1 решит проблему
https://github.com/curl/curl/pull/6859

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7335
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 02.05.21 20:08. Заголовок: Каким образом перехв..


Каким образом перехватить то что выводит HB_CURLOPT_VERBOSE и писать в файл ?
curl_easy_setopt( curl, HB_CURLOPT_VERBOSE, .t.)
Пробовал
HB_CURLOPT_STDERR
HB_CURLOPT_FILE
HB_CURLOPT_WRITEHEADER
Результат нулевой........

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1663
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 02.05.21 22:13. Заголовок: Dima пишет: Каким о..


Dima пишет:

 цитата:
Каким образом перехватить то что выводит HB_CURLOPT_VERBOSE и писать в файл ?



The verbose information will be sent to stderr, or the stream set with CURLOPT_STDERR

CURLOPT_STDERR в hbcurl не реализован.
Значит остается
/* NOTE: Redirect STDERR to a file to see the verbose output. */ - примечание из примера к hbcurl

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1665
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 03.05.21 10:42. Заголовок: Петр пишет: Значит ..


Петр пишет:

 цитата:
Значит остается...


Или самому написать что-то такое


 цитата:

 
static HB_GARBAGE_FUNC( FILE_release )
{
void ** ph = ( void ** ) Cargo;

/* Check if pointer is not NULL to avoid multiple freeing */
if( ph && *ph )
{
/* Destroy the object */
fclose( ( FILE * ) *ph );

/* set pointer to NULL to avoid multiple freeing */
*ph = NULL;
}
}

static const HB_GC_FUNCS s_gcFILEFuncs =
{
FILE_release,
hb_gcDummyMark
};

static void hb_FILE_ret( FILE * p )
{
if( p )
{
void ** ph = ( void ** ) hb_gcAllocate( sizeof( FILE * ), &s_gcFILEFuncs );

*ph = p;

hb_retptrGC( ph );
}
else
hb_retptr( NULL );
}

static FILE * hb_FILE_par( int iParam )
{
void ** ph = ( void ** ) hb_parptrGC( &s_gcFILEFuncs, iParam );

return ph ? ( FILE * ) *ph : NULL;
}


HB_FUNC( CURL_FOPEN )
{
hb_FILE_ret( hb_fopen( hb_parcx( 1 ), "w+b" ) );
}

HB_FUNC( CURL_EASY_SETOPT2 )
{
if( PHB_CURL_is( 1 ) && HB_ISNUM( 2 ) )
{
PHB_CURL hb_curl = PHB_CURL_par( 1 );
CURLcode res = ( CURLcode ) HB_CURLE_ERROR;

if( hb_curl && ( hb_parni( 2 ) == HB_CURLOPT_STDERR ) )
{
res = curl_easy_setopt( hb_curl->curl, CURLOPT_STDERR, hb_FILE_par( 3 ) );
}

hb_retnl( ( long ) res );
}
else
hb_errRT_BASE( EG_ARG, 2010, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS );
}




Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1666
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 03.05.21 10:49. Заголовок: Здесь я использовал ..


Здесь я использовал фрагменты кода из hbpgsql и hbcurl. Это нормально
Добавил curl_easy_setopt2, хотя можно и curl_easy_setopt поправить.

Использование:

 цитата:

 
LOCAL lVerbose := .T.
LOCAL fStdErr := curl_fopen('verb.txt')
...
? curl_easy_setopt( curl, HB_CURLOPT_VERBOSE, lVerbose )
? curl_easy_setopt2( curl, HB_CURLOPT_STDERR, fStdErr )




Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1667
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 03.05.21 10:55. Заголовок: Dima пишет: С Delay..


Dima пишет:

 цитата:
С DelayLoad хорошее решение
Но такой фичи похоже нет в MINGW , что печально.


Пока лучше с этим не связываться, геморно.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7336
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 03.05.21 11:12. Заголовок: Петр пишет: Или сам..


Петр пишет:

 цитата:
Или самому написать что-то такое


Спасибо , только не понятно куда этот кусок кода вставить , в сырец HBCURL и пересобрать ?
Петр пишет:

 цитата:
Пока лучше с этим не связыватся, геморно.


Я уже смирился с этим

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1668
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 03.05.21 11:17. Заголовок: Dima пишет: Спасибо..


Dima пишет:

 цитата:
Спасибо , только не понятно куда этот кусок кода вставить , в сырец HBCURL и пересобрать ?



Да, добавить в hbcurl\core.c и пересобрать.

В конец файла или я вот у себя добавил перед таким фрагментом

/* Harbour interface */
/* ----------------- */

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7337
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 03.05.21 11:29. Заголовок: Петр пишет: Да, доб..


Петр пишет:

 цитата:
Да, добавить в hbcurl\core.c и пересобрать.


Да это работает , спасибо

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7338
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 03.05.21 19:46. Заголовок: Dima пишет: * если..


Dima пишет:

 цитата:
* если LIST средствами CURL получать через HB_CURLOPT_DIRLISTONLY
* там только имена


Был не прав и там еще 1 параметр и если он равен 0 тогда идет полный лист с размерами файлов и тд
Но к сожалению свою маску задать не получится и там всегда *.*
Поэтому юзаем HB_CURLOPT_CUSTOMREQUEST,"LIST "............

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7339
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 06.05.21 17:33. Заголовок: Как понять с помощью..


Как понять с помощью HBCURL что подключаемся мы через мобильного провайдера ?
Среди опций curl_easy_getinfo данных о прове не увидел.....

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1673
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 08.05.21 22:10. Заголовок: Dima пишет: Как пон..


Dima пишет:

 цитата:
Как понять с помощью HBCURL что подключаемся мы через мобильного провайдера ?
Среди опций curl_easy_getinfo данных о прове не увидел.....



Для cURL можно так

Запрос
curl -X GET http://ip-api.com/json/?fields=status,message,country,countryCode,isp,query
Результат
{"status":"success","country":"Ukraine","countryCode":"UA","isp":"Kyivstar UA","query":"94.153.**.***"}

Запрос
curl -X GET http://ip-api.com/csv/?fields=status,message,country,countryCode,isp,query
Результат
success,Ukraine,UA,Kyivstar UA,46.211.**.***

Т.е. ответ можно получить в форматах JSON, XML, CSV..

[url=https://ip-api.com/docs/api:csv]Подробнее[/url]

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1684
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 12.05.21 22:22. Заголовок: Dima пишет: Как пон..


Dima пишет:

 цитата:
Как понять с помощью HBCURL что подключаемся мы через мобильного провайдера ?




 цитата:

 
#include "hbcurl.ch"

#define CURL_HTTP_VERSION_2TLS 4

PROCEDURE Main()

LOCAL curl, cStr

curl_global_init()

IF ! Empty( curl := curl_easy_init() )
curl_easy_setopt( curl, HB_CURLOPT_BUFFERSIZE, 102400 )
curl_easy_setopt( curl, HB_CURLOPT_URL, "http://ip-api.com/csv/?fields=status,message,country,mobile,isp,query" )
curl_easy_setopt( curl, HB_CURLOPT_NOPROGRESS, .T. )
curl_easy_setopt( curl, HB_CURLOPT_USERAGENT, "curl/7.75.0" )
curl_easy_setopt( curl, HB_CURLOPT_MAXREDIRS, 50 )
curl_easy_setopt( curl, HB_CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2TLS )
curl_easy_setopt( curl, HB_CURLOPT_SSL_VERIFYPEER, .F. )
curl_easy_setopt( curl, HB_CURLOPT_SSL_VERIFYHOST, .F. )
curl_easy_setopt( curl, HB_CURLOPT_FTP_SKIP_PASV_IP, .F. )
curl_easy_setopt( curl, HB_CURLOPT_TCP_KEEPALIVE, .T. )
curl_easy_setopt( curl, HB_CURLOPT_DL_BUFF_SETUP )

curl_easy_perform( curl )

? "EFFECTIVE URL:", curl_easy_getinfo( curl, HB_CURLINFO_EFFECTIVE_URL )
cStr := curl_easy_dl_buff_get( curl )
? "RESULT: " + cStr

IF hb_ATokens( cStr, "," )[ 4 ] == "true"
? "Mobile (cellular) connection."
ENDIF

curl_easy_reset( curl )
curl_easy_cleanup( curl )

ENDIF

curl_global_cleanup()

RETURN




Опция cURL --libcurl <file> рулит..

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7349
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 13.05.21 10:12. Заголовок: Петр Понял. Спасибо..


Петр
Понял. Спасибо.
Одна проблема только есть , там где нужно чекнуть эту штуку , сисадмин закрыл 80 и 443 порты
Разберемся.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7363
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 16.05.21 16:17. Заголовок: Странная штука , вро..


Странная штука , вроде должно работать а не работает и ни какой реакции
curl_easy_setopt( curl, HB_CURLOPT_PREQUOTE,{"CLNT testklient"})

Ежели вот так , то пашет конечно
curl_easy_setopt( curl, HB_CURLOPT_QUOTE, {"CLNT testklient", "CWD "+rdir} )

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 65 , стр: 1 2 3 4 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 155
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет