Jonas Skrevet 24. august 2004 Del Skrevet 24. august 2004 Heisann Har fått opp en webserver her nå, og har kommet over et stort problem: Filene som brukeren spør etter lastes inn i en variabel. Med store filer tar det sinsykt lang tid! Her er koden: Public Function LoadFile(filename1 As String) As String If dir(filename1) = "" Then GoTo feil Open filename1 For Binary As #1 LoadFile = Input(FileLen(filename1), #1) Close #1 Exit Function feil: LoadFile = Form1.Text1.text & vbNewLine & "<center><p><b>404</b></p></center>" & vbNewLine & "<center><p>The file you requested was no found!</p></center>" & vbNewLine & Form1.Text2.text End Function Jeg bruker den sånn: Brukere(Index).SendData LoadFile("C:\filbane tralala") Finnes det en raskere løsning? Jonas Lenke til kommentar
aadnk Skrevet 24. august 2004 Del Skrevet 24. august 2004 (endret) Det er mye raskere å manuelt sende filen i flere seksjoner, enn å la Winsock gjøre dette automatisk. Som du selv påpeker, må du da flytte hele filen over i en buffer, og dette kan bruke både tid og ram hvis filen er veldig stor. Prøv derfor denne koden istedenfor: Private Const Chunk As Integer = 4096 Public Sub SendFile(sPath As String, Winsock As Winsock) Dim Free As Long, Remaining As Long Dim NextChunk() As Byte Open sPath For Binary Access Read As #Free Do Remaining = LOF(Free) - Loc(Free) If Remaining < 1 Then Winsock.Close Exit Do Else If Remaining >= Chunk Then ReDim NextChunk(Chunk - 1) Else ReDim NextChunk(Remaining - 1) End If Get #Free, , NextChunk Winsock.SendData NextChunk End If DoEvents Loop Close #Free End Sub Endret 24. august 2004 av aadnk Lenke til kommentar
Jonas Skrevet 25. august 2004 Forfatter Del Skrevet 25. august 2004 Funker ikke helt som den burde. Fikk error på "Open sPath For .."-linjen. "Bad file or bad filenumber". Filbanen er korekt. Lenke til kommentar
GeirGrusom Skrevet 25. august 2004 Del Skrevet 25. august 2004 #Free = FreeFile() Lenke til kommentar
Jonas Skrevet 25. august 2004 Forfatter Del Skrevet 25. august 2004 #Free = FreeFile() Ja .. Men nå får jeg en annen error: Wrong protocol or connection state for the requested transaction or request Lenke til kommentar
aadnk Skrevet 25. august 2004 Del Skrevet 25. august 2004 Er du sikker på at du kaller metoden når Winsock objektet er tilkoblet en klient? Dobbelsjekk koden for feil. Skulle du ikke finne feilkilden, kan du selvsakt prøve å poste kildekoden her. Lenke til kommentar
Jonas Skrevet 25. august 2004 Forfatter Del Skrevet 25. august 2004 (endret) Er du sikker på at du kaller metoden når Winsock objektet er tilkoblet en klient? Dobbelsjekk koden for feil. Skulle du ikke finne feilkilden, kan du selvsakt prøve å poste kildekoden her. Min feil her Hadde close kode fra den forrige sendemetoden Private Sub brukere_SendComplete(Index As Integer) List1.AddItem Brukere(Index).RemoteHostIP & " lukker tilkobling" Brukere(Index).Close End Sub Den lukket tydelighvis etter at første del av fila var sendt Edit: Har et lite problem til nå .. Når man laster ned en fil stopper den etter den første delen! Bare litt av filen blir lastet ned, og den stopper. Endret 25. august 2004 av Jonas Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå