Sayfa Download ilk 100 byte

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
fox
Üye
Mesajlar: 78
Kayıt: 24 Nis 2006 08:28

Sayfa Download ilk 100 byte

Mesaj gönderen fox »

İyi Günler

Ben web sayfalarını dolaşan ve dolaştığı sayfadan ilk 100 byte nı kaydeden bir program yapmaya çalışıyorum. Ama ilk 100 byte işini bir türlü halledemedim kullandığım kod aşağıda. Kod ile 100 byte lık kısmını koparıp alabiliyorum ama hFile := InternetOpenURL(hInet,PChar(url),nil,0,0,0); sorgusunu yaptığım sırada sayfanın tamamını hafızaya çekiyor. Bu da boşyere hız kaybı ve kotayı dolduryor.

Not:(Sayfa yapsında olduğu için Range header yapısını kabul etmiyor)

Kod: Tümünü seç

function DownloadFile(
    const url: string;
    const destinationFileName: string): boolean;
var
  hInet: HINTERNET;
  hFile: HINTERNET;
  localFile: File;
  buffer: array[1..1024] of byte;
  bytesRead: DWORD;
begin
  result := False;
  hInet := InternetOpen(PChar(application.title),
    INTERNET_OPEN_TYPE_PRECONFIG,nil,nil,0);
  hFile := InternetOpenURL(hInet,PChar(url),nil,0,0,0);
  if Assigned(hFile) then
  begin
    AssignFile(localFile,destinationFileName);
    Rewrite(localFile,1);
    repeat
      InternetReadFile(hFile,@buffer,SizeOf(buffer),bytesRead);
      BlockWrite(localFile,buffer,bytesRead);
    until bytesRead = 0;
    CloseFile(localFile);
    result := true;
    InternetCloseHandle(hFile);
  end;
  InternetCloseHandle(hInet);
end;
BreakPoint ile "" if Assigned(hFile) then "" durduruyorum
Resim

Ama dosya gelmeye devam ediyor

Resim
Resim

Bu Tcp Segment of reassem.. ları nasıl durdurabilirim. Veya bu kod haricinde hangi apilerle çalışmamlazım
fox
Üye
Mesajlar: 78
Kayıt: 24 Nis 2006 08:28

Re: Sayfa Download ilk 100 byte

Mesaj gönderen fox »

Cevap verecek biri yokmu??

2-3 ACK paketinden sonra paket gelsin istemiyorum nasıl yapabilirim.
Kullanıcı avatarı
Lost Soul
Üye
Mesajlar: 1064
Kayıt: 01 Nis 2007 02:55
Konum: mekan ANKARA toprak ELAZIĞ
İletişim:

Re: Sayfa Download ilk 100 byte

Mesaj gönderen Lost Soul »

kod içerisindeki
InternetReadFile(hFile,@buffer,SizeOf(buffer),bytesRead);
deyiminin delphinin helpinde kullanımına baktım.

Kod: Tümünü seç

Parameters
hFile 
[in] Handle returned from a previous call to InternetOpenUrl, FtpOpenFile, GopherOpenFile, or HttpOpenRequest. 
lpBuffer 
[out] Pointer to a buffer that receives the data. 
dwNumberOfBytesToRead 
[in] Number of bytes to be read. 
lpdwNumberOfBytesRead 
[out] Pointer to a variable that receives the number of bytes read. InternetReadFile sets this value to zero before doing any work or error checking. 
Return Value
bu açıklamaya göre deyimi şu şekilde yazdığınızda çalışması lazım

Kod: Tümünü seç

InternetReadFile(hFile,@buffer,100,bytesRead);
kolay gelsin.


Edit:
Bu durumda repeat.... until bytes read =0 kısmına ihtiyacınız kalmayacak. sonsuz öngü olmaması için bu deyimleri kaldırmalısınız.
fox
Üye
Mesajlar: 78
Kayıt: 24 Nis 2006 08:28

Re: Sayfa Download ilk 100 byte

Mesaj gönderen fox »

İlginden dolayı teşşekkür ederim ama malesef sorun orda değil daha kodla o satırı tetiklemeden tüm içerik ram'a yükleniyor. Resimlerde break-pointle göstermeye çalıştım. Program durduğu halde wiresharkta hareket devam ediyor. Bu haraketi engellemeye çalışıyorum
fox
Üye
Mesajlar: 78
Kayıt: 24 Nis 2006 08:28

Re: Sayfa Download ilk 100 byte

Mesaj gönderen fox »

/// güncelleme
Cevapla