Autor Beitrag
delphi10
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 447
Erhaltene Danke: 2

W2K, XP, Vista64, Win7 64
RAD-Studio 2010
BeitragVerfasst: Do 18.11.10 23:02 
Hi
Aus einem Programm starte ich eine Download mit:UrlMon.UrlDownloadToFile(nil, PChar(SourceFile), PChar(DestFile), 0nil). Dabei wird eine UDP und TCP-Verbindung aufgebaut. Nach dem Download beendet sich die TCP-Verbindung, die UDP bleibt aber bis zum Programmende bestehen. Also meine Frage: Wie kann ich eine UDP-Verbindung canceln, oder wie kann ich verhindern, dass sie überhaupt aufgebaut wird? Wenn ich es nicht übersehen habe, gibt es im UrlMon-Interface keinen entsprechenden Befehl.
Danke und Gruß Delphi10

_________________
Salus populi suprema lex esto
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 19.11.10 00:05 
Bist du denn auf diese Funktion angewiesen?

Ich benutze die ohnehin nie, deshalb hab ich auch die nachgeschaut was die eigentlich so macht beim Verbinden. Wirklich ändern wirst du bei einem abgeschlossenen Befehl wie diesem wohl nicht viel können. Ich hab jedenfalls auch nichts gesehen erstmal.

Für diesen Beitrag haben gedankt: delphi10
bummi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: Fr 19.11.10 00:13 
bei o.g. Funktion kann ich nicht helfen, vielleicht kannst Du ja das brauchen?
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
uses ExtActns;

Function MakeSaveURL(const AURL:String):String;
begin
  if Pos('http',LowerCase(AURL))=0 then Result := 'http://' +AURL else Result := AURL;
end;


function DownloadURLToFile(const AURL, AFileName : TFileName) : boolean;
begin
  Result:=True;
  with TDownLoadURL.Create(nildo
  try
    URL :=  MakeSaveURL(AURL);
    Filename := AFileName;
    try
      ExecuteTarget(nil);
    except
      Result:=False;
    end;
  finally
    Free;
  end;
end;

_________________
Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS

Für diesen Beitrag haben gedankt: delphi10
delphi10 Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 447
Erhaltene Danke: 2

W2K, XP, Vista64, Win7 64
RAD-Studio 2010
BeitragVerfasst: Fr 19.11.10 00:13 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Bist du denn auf diese Funktion angewiesen?

Ich benutze die ohnehin nie, deshalb hab ich auch die nachgeschaut was die eigentlich so macht beim Verbinden. Wirklich ändern wirst du bei einem abgeschlossenen Befehl wie diesem wohl nicht viel können. Ich hab jedenfalls auch nichts gesehen erstmal.

Angewiesen sicher nicht. Ich will lediglich zwei Dateien runterladen. Der Ärger damit geht noch weiter, es gibt im Programm eine Wiederholmöglichkeit für den Download aber durch die noch existierende UDP Verbindung gibts einen E/A-Error 32. Ich geh mal googeln oder schau mal in der Schweiz vorbei. Danke erstmal.
Gruß Delphi10

_________________
Salus populi suprema lex esto
delphi10 Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 447
Erhaltene Danke: 2

W2K, XP, Vista64, Win7 64
RAD-Studio 2010
BeitragVerfasst: Fr 19.11.10 00:31 
user profile iconbummi hat folgendes geschrieben Zum zitierten Posting springen:
bei o.g. Funktion kann ich nicht helfen, vielleicht kannst Du ja das brauchen?
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
uses ExtActns;

Function MakeSaveURL(const AURL:String):String;
begin
  if Pos('http',LowerCase(AURL))=0 then Result := 'http://' +AURL else Result := AURL;
end;


function DownloadURLToFile(const AURL, AFileName : TFileName) : boolean;
begin
  Result:=True;
  with TDownLoadURL.Create(nildo
  try
    URL :=  MakeSaveURL(AURL);
    Filename := AFileName;
    try
      ExecuteTarget(nil);
    except
      Result:=False;
    end;
  finally
    Free;
  end;
end;

Beendet leider auch nicht UDP-Verbindung, ist ja auch nix anderes als aus der UrlMon. Trotzdem Danke.

_________________
Salus populi suprema lex esto
bummi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: Fr 19.11.10 00:59 
einen hab ich noch ....

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
uses winInet;
{$R *.dfm}

function GetInetFileAsString(const fileURL: string): string;
const
  C_BufferSize = 4096;
var
  sAppName: string;
  hSession, hURL: HInternet;
  Buffer: array[0..C_BufferSize] of Byte;
  BufferLen: DWORD;
  strHeader: String;
  strPageContent: TStringStream;
  AUrl:String;
begin
  Result := '';
  if Pos('http://',Lowercase(fileURL))=0 then AUrl := 'http://' + fileURL
  else AUrl := fileURL;

  sAppName := ExtractFileName(Application.ExeName);
  hSession := InternetOpen(PChar(sAppName), INTERNET_OPEN_TYPE_PRECONFIG, nilnil0);
  try
    strHeader := 'Accept-Charset: utf-8'#13#10;
    hURL := InternetOpenURL(hSession, PChar(AURL), PChar(strHeader), Length(strHeader), 00);
    try
      strPageContent := TStringStream.Create('', TEncoding.Default);
      try
        BufferLen := 1;
        while BufferLen >0 do
          begin
          If InternetReadFile(hURL, @Buffer[0], SizeOf(Buffer), BufferLen) then
          if BufferLen > 0 then strPageContent.WriteBuffer(Buffer[0], BufferLen);
          end;
        Result := strPageContent.DataString;
      finally
        strPageContent.Free;
      end;
    finally
      InternetCloseHandle(hURL);
    end
  finally
    InternetCloseHandle(hSession);
  end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
   Memo1.Text := GetInetFileAsString('http://www.google.de')
end;

_________________
Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 19.11.10 06:19 
user profile icondelphi10 hat folgendes geschrieben Zum zitierten Posting springen:
Angewiesen sicher nicht. Ich will lediglich zwei Dateien runterladen.
Dann kannst du ja auch einfach Indy und TIdHttp nehmen. Ok, ist etwas überdimensioniert, aber dafür funktioniert es gut.

Es gibt aber auch andere Pakete wie Ararat Synapse usw. als Alternativen.