Avatar billede pgmgreece Nybegynder
27. november 2007 - 10:19 Der er 7 kommentarer og
1 løsning

En ASP.NET-side som kan måle brugerens download-hastighed?

Hej Eksperter.

Jeg er rimelig ny i programmerings-genren, og vil gerne have hjælp til at lave en ASP.NET-side vha. VB-scripts, hvor web-brugerne skal kunne måle deres download-hastighed, og så få resultatet vist på en ASP.NET-side.

Grunden til at jeg vil lave siden i ASP.NET, er at jeg til sidst vil smide alle resultater ind i en database, som skal være tilgængelig for web-brugerne.


NB! Mit udgangspunkt er at bruge meget kort og simpel kodning!


Jeg har 2 idéer til hvordan download-hastigheden kan måles:


(1)
Første forslag er at brugeren downloader en fil (1024kb) fra ASP.NET-siden, og ASP.NET-siden vil så vha. start-tid og slut-tid beregne brugerens download-hastighed.

Her er mit første udkast til koden:


    Protected Sub LinkButton1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles LinkButton1.Click

        ' File & Path
        Dim filepath As String = "files/10240kb.txt"

        ' File Name
        Dim filename As String = System.IO.Path.GetFileName(filepath)

        ' Download Start Time
        Dim st As Long = Environment.TickCount

        ' Clears Buffer
        Response.Clear()

        ' File Type
        Response.ContentType = "application/octet-stream"

        ' Default Filename In Download Dialog Box
        Response.AddHeader("Content-Disposition", "attachment; filename=""" & filename & """")

        ' Sends Buffered Output To Client (Download)
        Response.Flush()

        ' Writing File To Disk
        Response.WriteFile(filepath)

        ' Download Finish Time
        Dim et As Long = Environment.TickCount

        ' End
        Response.End()


    End Sub



(2)
Andet forslag er at web-brugeren åbner en ASP.NET-side der indeholder en masse kode, som ialt fylder 1024kb, hvorefter ASP.NET-siden beregner hvor langt tid det tog brugeren at åbne siden og viser brugerens download-hastighed.

Her er et udkast til denne metode:

<html>
<head runat="server">
   
</head>

<body>

<script language="vbscript" type="text/vbscript">
   
    <!-- Download Start Time -->
    ST = Environment.TickCount


<!-- En masse x'er som tilsammen fylder 1024kb -->
<!-- xxxxxxxxxxxxxxxxxxxxxxxxxxxxx~ -->


    <!-- Download Finish Time -->
    ET = Environment.TickCount
   
   
    <!-- Hastighedsberegning -->
    DT = (ET - ST) / 1000
    DataSize = 50
    LS = DataSize / DT
    LSx = (LS * 8)
    kbpsx = Math.Round(LSx * 10 * 1.02)
    kbps = kbpsx / 10


    <!-- Vis resultat -->
    document.write(kbps)

</script>

</body>

</html>



@@@ Jeg har meget hurtigt brug for hjælp til at strikke det hele sammen! @@@
Avatar billede arne_v Ekspert
27. november 2007 - 16:16 #1
#2 er helt ved siden af - de x'er bliver smidt vaek allerede under compileringen.

#1 er ikke god fordi den kun maaler hvor lang tid det tager siden at sende data til ASP.NET
men ikke hvor lang tid det har taget for client at faa filen.
Avatar billede arne_v Ekspert
27. november 2007 - 16:40 #2
Du boer lave noget client side kode der kan aabne en socket (evt. HTTP forbindelse) og maale effektivt hvad den kan modtage.

Java applet eller .NET ekvivalenten paa client side og et script server side til gemme
stats.
Avatar billede pgmgreece Nybegynder
27. november 2007 - 18:34 #3
Du må meget gerne komme med eksempler eller udkasts.
Avatar billede pgmgreece Nybegynder
28. november 2007 - 19:38 #4
Jeg lukker spgm. da jeg har fundet på en okay løsning, med inspiration fra arne_v, Tak!:
Downloadable VB.NET-consol til at udregne download-rate og en asp.NET-side som kan skrive og læse fra en database.
Avatar billede nielle Nybegynder
29. november 2007 - 07:40 #5
Burde arne_v så ikke have haft lidt point på denne her?
Avatar billede pgmgreece Nybegynder
29. november 2007 - 12:44 #6
Med glæde!

Men er det da muligt at lave om på det satsede antal point?

Fordi han kom jo ikke med en mere detaljeret løsning, hvormed jeg så ikke mener at han skal have alle 200 point.
Avatar billede nielle Nybegynder
29. november 2007 - 20:40 #7
Ja det er det ... du kan jo altid smide et svar selv og så tage nogle af pointene tilbage igen. Men nu er spørgsmålet lukket og så findes den mulighed ikke mere.
Avatar billede pgmgreece Nybegynder
30. november 2007 - 09:53 #8
Tak for informationen.

#Response.End
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
Kurser inden for grundlæggende programmering

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