Здравствуйте, можете подсказать. PascalABC.net с библиотекой System.Net; через команду webClient.DownloadFile соединяется через TCP 1.0?
На msdn:
This method uses the RETR command to download an FTP resource. For an HTTP resource, the GET method is used.
Не уверен то ли это, не сильно разбираюсь в этом, но если на той странице и на более новой версии нету - вряд ли кто то знает.
В принципе вы ещё можете декомпилировать, к примеру, такую программу:
begin
(new System.Net.WebClient).DownloadFile('','');
end.
И посмотреть как реализовано, но легко не будет. Я попытался, но далеко не ушёл. К примеру там создаётся переменная с каким то типом - наследником от System.IO.Stream
и с неё считывается файл в виде массива байт, но какой именно у неё тип не уточняется, а в том типе-наследнике переопределена процедура считывания, поэтому его надо узнать. Создаёт переменную потока - переменная respond
(или что то типо того), но с ней та же история что и у потока, её создаёт переменная request
(или что то типо того), но и с ней то же самое.
Покопавшись я проверил, через TCP 1.0, но мне надо чтоб соединение проходило через TCP 1.1 или 1.2 так как сайт с которым я работаю не поддерживает 1.0. Подскажите как можно так сделать.
Кхм… Ну, на сколько я понимаю, есть 3 варианта:
- Искать .Net библиотеку - обёртку для низкоуровневых функций, у которой будет достаточный для вас функционал.
- Написать библиотеку - обёртку для низкоуровневых функций, добавляя по мере необходимости функцинал.
- Писать используя низкоуровневые функции прямо в коде.
Пошёл другим путём, запустил свой сервер, но при запуске такая ошибка.
Код:
procedure first();
begin
web.DownloadFile('92.243.188.63/RedFile/Rus/ServerData/Market/test.txt',temp);
basego := new Thread(base);
basego.Start;
end;
Ошибка
betamarket.pas(115) : Ошибка времени выполнения: Исключение во время запроса WebClient.
Опять же с msdn
:
ArgumentNullException:
The address parameter is null.
WebException:
The URI formed by combining BaseAddress and address is invalid.
-or-
filename is null or Empty.
-or-
The file does not exist.
-or-
An error occurred while downloading data.
NotSupportedException:
The method has been called simultaneously on multiple threads.
Ловите вашу ошибку с помощью try except end
и смотрите тип, далее наверное просто догадываться что не так, то что 1 вид исключений для 4 видов неполадок это не очень хорошо конечно…
Ошибку понял. .net отказывается работать с IP. С доменом работает нормально.
Вот пример с msdn переведённый на паскаль:
{$reference System.IO.Compression.FileSystem.dll}
begin
System.IO.Compression.ZipFile.CreateFromDirectory('my folder','my Zip.zip');
System.IO.Compression.ZipFile.ExtractToDirectory('my Zip.zip','my extracted folder');
end.
Постарайтесь всё же сначала искать в поисковиках (msdn, StackOverflow и др., то есть форумы и даже просто яндекс/гугл), а потом задавать вопрос, чтоб на простейшие вопросы не было отвечено по 10 раз.