Вопросы по .net


#1

Здравствуйте, можете подсказать. PascalABC.net с библиотекой System.Net; через команду webClient.DownloadFile соединяется через TCP 1.0?


#2

На msdn:

This method uses the RETR command to download an FTP resource. For an HTTP resource, the GET method is used.

Не уверен то ли это, не сильно разбираюсь в этом, но если на той странице и на более новой версии нету - вряд ли кто то знает.


#3

В принципе вы ещё можете декомпилировать, к примеру, такую программу:

begin
  (new System.Net.WebClient).DownloadFile('','');
end.

И посмотреть как реализовано, но легко не будет. Я попытался, но далеко не ушёл. К примеру там создаётся переменная с каким то типом - наследником от System.IO.Stream и с неё считывается файл в виде массива байт, но какой именно у неё тип не уточняется, а в том типе-наследнике переопределена процедура считывания, поэтому его надо узнать. Создаёт переменную потока - переменная respond (или что то типо того), но с ней та же история что и у потока, её создаёт переменная request (или что то типо того), но и с ней то же самое.


#4

Покопавшись я проверил, через TCP 1.0, но мне надо чтоб соединение проходило через TCP 1.1 или 1.2 так как сайт с которым я работаю не поддерживает 1.0. Подскажите как можно так сделать.


#5

Кхм… Ну, на сколько я понимаю, есть 3 варианта:

  1. Искать .Net библиотеку - обёртку для низкоуровневых функций, у которой будет достаточный для вас функционал.
  2. Написать библиотеку - обёртку для низкоуровневых функций, добавляя по мере необходимости функцинал.
  3. Писать используя низкоуровневые функции прямо в коде.

#6

Пошёл другим путём, запустил свой сервер, но при запуске такая ошибка.
Код:

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.

#7

Опять же с 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 видов неполадок это не очень хорошо конечно…


#8

Ошибку понял. .net отказывается работать с IP. С доменом работает нормально.


#9

@Sun_Serega есть ли в .net операторы для работы с архивами?


#10

Вот пример с 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 раз.