problem beim download einer datei von einem webserver



  • hola leute

    ich probier gerade eine datei von einem webserver per socket runter zu laden.
    ich bekomme jedoch immer nur den anfang der datei gesendet. genau genommen die ersten 4242 bytes anstatt den vollen 47691 bytes.
    ich mach das derzeit mit TClientSocket vom BCB.
    die verbindung wird immer vom server beendet. sagt mir zu mindest das onDisconnect Ereignis.

    dem server schicke ich folgenden string:

    AnsiString str = "GET /home/index/search.asp HTTP/1.1 \r\nHost: www.autoscout24.de\r\nUser-Agent: SocketTest\r\nKeep-Alive: 3000\r\nConnection: keep-alive\r\n\r\n";
    

    jemand ne ahnung woran das liegen koennte?

    Meep Meep



  • Dann frag doch im BCB Forum?!?



  • ich glaub mal weniger das es am TClientSocket liegt, deshalb hab ich die frage in Rund um gepostet.

    Meep Meep



  • reduzier mal den request auf das Get und den Host, lass keepalive und die spielereien erstmal weg. dann kannst sehen was alles zurück kommt.



  • das gleiche in gruen. wieder nur die ersten 4242 bytes.

    bekomme folgende ausgabe:

    HTTP/1.1 200 OK
    Date: Sun, 25 Sep 2005 10:01:15 GMT
    Server: Microsoft-IIS/6.0
    X-Powered-By: ASP.NET
    Content-Length: 47684
    Content-Type: text/html
    Set-Cookie: GUID=C20F5631%2D7BE3%2D4A1C%2DB765%2D9CE4C5401240; path=/
    Cache-control: private
    
    <!-- CVS $Id: asp-as24-sessionHeader-APP.asp,v 1.13 2003/11/14 09:36:38 fzorca Exp $ -->
    <!-- CVS $Id: asp-as24-redirect_onerror-APP.asp,v 1.3 2004/04/22 17:00:46 rbeggs Exp $ -->
    <!-- CVS $Id: asp-as24-track-LIB.asp,v 1.30 2005/06/15 13:28:37 acan Exp $ -->
    <!-- CVS $Id: asp-as24-track-header-APP.asp,v 1.2 2003/02/18 14:23:04 sUllmann Exp $ -->
    
    <html>
    <head>
    
    	<title>AutoScout24</title>
    
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    
    <link rel="stylesheet" href="/styles/def_styles.css" type="text/css">
    <link rel="stylesheet" href="/styles/hp_styles.css" type="text/css">
    <!-- CVS $Id: asp-as24-choosestyles-UI.asp,v 1.8 2005/06/27 14:15:54 fkirchlechner Exp $ -->
    
    <link rel="stylesheet" href="/styles/app_styles.css" type="text/css" />
    <link rel="stylesheet" href="/styles/priv_styles.css" type="text/css" />
    <link rel="stylesheet" href="/styles/hp_styles_newcars.css" type="text/css">
    
    <script language="JavaScript">
    <!--
    function popUp(theUrl,theName,props){ 
    	window.open(theUrl,theName,props);
    }
    
    function schwacke(){
    
        var scriptname= '/home/index/search.asp';           
        if(document.cookie.indexOf("zanox=1")>=0)koop = '855D2A2961';
        else koop = '42FB6A6CEB';
        var link1= escape('http://wli-de.eurotax.com/wli/dede/entry/welcome.php?koop_id='+koop);
        //var url='/redir.asp?site=1&language=ger&name=az_ct_schwacke'+ scriptname+'&link='+ link1;
    	var url='/redir.asp?type=AC&eventdetail=SCEC&site=1&language=ger&name=az_ct_schwacke&link='+ link1;
        breite=790;
        hoehe=580;
        XX=screen.availWidth;
        YY=screen.availHeight;
        x=(XX-breite)/2;
        y=(YY-hoehe)/2;           
        var win=window.open(url,'schwacke','height=580,width=790,toolbar=no,location=no,menubar=no,scrollbars=yes,resizable=no,left='+x+',top='+y);
        if (win.focus) {win.focus();}
    
    }
    
    //-->
    </script>
    
    <!-- CVS $Id: asp-as24-allheads.asp,v 1.3 2004/12/14 15:33:28 acan Exp $ -->
    <script language="javascript" src="/jscript/track.js"></script>
    
    <!-- BEGIN: AdSolution-Tag 4.1: Global-Code [PLACE IN HTML-HEAD-AREA!] -->
    <script type="text/javascript" language="javascript" src="http://a.as-eu.falkag.net/dat/dlv/aslmain.js"></script>
    <!-- END: AdSolution-Tag 4.1: Global-Code -->
    
    </head>
    
    <body class="hp_AS24BgColor" leftmargin="0" topmargin="0" marginheight="0" marginwidth="0">	
    <!-- CVS $Id: asp-as24-allbodies-top.asp,v 1.4 2004/12/15 14:58:18 acan Exp $ -->
    <script language="javascript">
    if (getCookie('as24Visitor')==null)
    {
    	SetCookie('as24Visitor','C20F5631-7BE3-4A1C-B765-9CE4C5401240',1800)
    }
    </script>
    
    <div style="position:absolute; left:0; top:0"><img src="/obtree/all/asp-as24-search-setsession.asp" width="1" height="1"></div>
    
    <script language="JavaScript">
    <!--
    document.write('<img src="http://toi.ivwbox.de/cgi-bin/ivw/CP/07020101;/Scout/Autoscout24/Gebrauchtwagen.html?r='+escape(document.referrer)+'&d='+Date.parse(new Date())+'" width="1" height="1" align="right">'); 
    //--> 
    </script> 
    <noscript> 
    <img src="http://toi.ivwbox.de/cgi-bin/ivw/CP/07020101;/Scout/Autoscout24/Gebrauchtwagen.html" width="1" height="1" align="right"> 
    </noscript>
    
    <table border="0" cellspacing="0" cellpadding="0" width="100%">
    <tr>
     <td colspan="4" class="hp_blueback"><!-- Scoutmenu --><map name="scoutmap">
    <area shape="rect" coords="8,4,50,12" href="http://www.scout24.de" target="_blank" alt="Scout24">
    <area shape="rect" coords="70,4,153,12" href="http://www.financescout24.de" target="_blank" alt="FinanceScout24">
    <area shape="rect" coords="174,4,249,12" href="http://www.friendscout24.de" target="_blank" alt="FriendScout24">
    <area shape="rect" coords="270,4,370,12" href="http://www.immobilienscout24.de/" target="_blank" alt="ImmobilienScout24">
    <area shape="rect" coords="390,4,452,12" href="http://www.JobScout24.de" target="_blank" alt="JobScout24">
    <area shape="rect" coords="472,4,548,12" href="http://www.TravelS
    

    content-length gibt mir hier die richtige groesse der datei an.
    verbindung wird dann jedoch nach 4242 bytes beendet.

    Meep Meep



  • Liegt an deinem Code.



  • Du musst halt zuerst die HTTP Header lesen, das Feld Content-Length richtig auswerten und dann weiterlesen mit der richtigen Laenge.



  • checker01 schrieb:

    Liegt an deinem Code.

    sehr intelligent. und wo liegt der fehler in meinem code ?
    du bisgt ja scheinbar der volle checker, erleuchte mich bitte.

    Power Off schrieb:

    Du musst halt zuerst die HTTP Header lesen, das Feld Content-Length richtig auswerten und dann weiterlesen mit der richtigen Laenge.

    hab schon so gemacht, das er so lange wartet, bis er die korrekte anzahl an bytges gelesen hat. aber da kann ich ewig und drei tage warten. mehr als 4242 bytes kommen da nicht.



  • Meep Meep schrieb:

    hab schon so gemacht, das er so lange wartet, bis er die korrekte anzahl an bytges gelesen hat. aber da kann ich ewig und drei tage warten. mehr als 4242 bytes kommen da nicht.

    Zeig doch mal Deinen Lesezugriff.

    Was fuer ein Betriebssystem hast Du? Windows?

    Wenn der Socket als Nonblocking geoeffnet ist, musst Du so oft lesen, bis Du alle Daten hast. Die Anzahl gelesener Bytes kann kleiner sein, als die Anzahl angeforderter Bytes.

    Unter UNIXen kommt noch das Problem dazu, dass z.B. noch ein Signal am Prozess auftreten kann, wodurch der Lesezugriff mit einem Error EINTR abbricht, den man abfangen muss und danach das Lesen neu probieren muss.



  • LOL. Wie soll ich dir den Fehler im Code zeigen, wenn du den Code nicht zeigst?



  • Wenn der Socket als Nonblocking geoeffnet ist, musst Du so oft lesen, bis Du alle Daten hast. Die Anzahl gelesener Bytes kann kleiner sein, als die Anzahl angeforderter Bytes.

    ist bei blocking genauso.


Anmelden zum Antworten