Avatar billede zuran Nybegynder
08. marts 2009 - 18:59 Der er 7 kommentarer

Webbrowser - Loade bestemt antal byte

Hej.

Er der nogle der ved, om det er muligt, at sætte en webBrowser til kun at loade et bestemt antal byte af en side?

Hvis jeg i en Windows Applikation f.eks sætter en webBrowser til at navigere til google.dk, så skal webBrowseren for hver enkel byte den loader (1 byte = 1 tegn), lægge 1 til (plusse) en int variabel f.eks.

Hvis vi så siger, at der højest må loades 1 KB, så skal webBrowseren automatisk stoppe med at loade, når int variablen når 1000.

Er der nogle der ved om det kan lade sig gøre, og evt. ved hvordan det kan laves?

Tak på forhånd.
Avatar billede martchap Nybegynder
08. marts 2009 - 21:01 #1
Jep, det kan lade sig gøre, men ikke med webBrowser (ikke 100% sikker, men jeg ville ikke gøre det sådan). Prøv istedet at bruge en webclient ;)

using System.Net;
using System.IO;

        int ByteLimit = 1000;
        WebClient WebC = new WebClient();
        void Download()
        {
            byte[] Data = new byte[ByteLimit];
            Stream s = WebC.OpenRead("http://google.dk");

            int i = 0;
            int b;
            while ((b = (byte)s.ReadByte()) != -1 && i < ByteLimit)
            {
                Data[i] = (byte)b;
                i++;
            }

            s.Close();
            Console.WriteLine(Data[1].ToString());
        }


Så får du de første 1000 byte.. Hvad skal du bruge det til? Jeg er bare lidt nysgerrig :P

/Martin
Avatar billede zuran Nybegynder
08. marts 2009 - 22:25 #2
Hej.

Det lyder bare kanon, og at det så heller ikke kræver mere.

Det er til noget sikkerhed, til et system, så en evt. kodefejl (F.eks en uendelig løkke) ikke får applikationen til at gå i stå.
Avatar billede zuran Nybegynder
08. marts 2009 - 22:37 #3
Hm, jeg har lige prøvet at teste med en database query. Uanset hvad jeg sætter ByteLimit til, så kan jeg i databasen se, at queryen bliver kørt. Det er noget PHP jeg er ude i.

Ved du hvad årsagen til det kan være?
Avatar billede martchap Nybegynder
09. marts 2009 - 14:16 #4
Det må du satme undskylde :D Jeg har vist kvajet mig lidt.. Prøvede lige at holde øje med mit netværk, og jeg kan godt se at den henter mere data.. Jeg skal nok lige finde en løsning... :P
Avatar billede martchap Nybegynder
09. marts 2009 - 15:50 #5
Det er sværere end man lige skulle regne med.. Prøv evt. med HttpWebRequest i den asynkrone version...

Noget i stil med:

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://google.dk");

            request.BeginGetResponse(new AsyncCallback([din egen metode]),[din egen klasse med noget info i]);



Men det er heller ikke engang sikkert det så virker... Det er da også latterligt det skal være så svært...
Avatar billede martchap Nybegynder
09. marts 2009 - 15:51 #6
Eller dvs. det skal nok virke... Men jeg ved ikke om det kan finde ud af at stoppe efter 1kb..
Avatar billede zuran Nybegynder
14. marts 2009 - 17:55 #7
Hej.

Jeg kender slet ikke til disse funktioner, så har jeg simpethen ingen anelse om, hvordan skal jeg få skrevet min egen metode og klasse til:

request.BeginGetResponse(new AsyncCallback([din egen metode]),[din egen klasse med noget info i]);
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester