Autor |
Beitrag |
delphi10
      
Beiträge: 447
Erhaltene Danke: 2
W2K, XP, Vista64, Win7 64
RAD-Studio 2010
|
Verfasst: Do 18.11.10 23:02
Hi
Aus einem Programm starte ich eine Download mit:UrlMon.UrlDownloadToFile(nil, PChar(SourceFile), PChar(DestFile), 0, nil). 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
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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
      
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: Fr 19.11.10 00:13
bei o.g. Funktion kann ich nicht helfen, vielleicht kannst Du ja das brauchen?
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(nil) do 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 
      
Beiträge: 447
Erhaltene Danke: 2
W2K, XP, Vista64, Win7 64
RAD-Studio 2010
|
Verfasst: Fr 19.11.10 00:13
jaenicke hat folgendes geschrieben : | 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 
      
Beiträge: 447
Erhaltene Danke: 2
W2K, XP, Vista64, Win7 64
RAD-Studio 2010
|
Verfasst: Fr 19.11.10 00:31
_________________ Salus populi suprema lex esto
|
|
bummi
      
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: Fr 19.11.10 00:59
einen hab ich noch ....
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, nil, nil, 0); try strHeader := 'Accept-Charset: utf-8'#13#10; hURL := InternetOpenURL(hSession, PChar(AURL), PChar(strHeader), Length(strHeader), 0, 0); 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
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 19.11.10 06:19
delphi10 hat folgendes geschrieben : | 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.
|
|
|