Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: ftp ongelma

sooda [26.01.2004 11:28:21]

#

Tein ftp ohjelman ja nyt se toimii muuten mutta serveri antaa _LIIKAA_ tietoa joka tiedostosta. Siinä mielessä omituinen että kun jaan tiedoston koon sen alkuperäisellä koolla niin saan 1,0123456789012345678901234567890123456789... sitten "normaalilla" ftp ohjelmalla saan oikean kokoisen tiedoston. Mitä ylimääräistä filuinfossa on?

Antti Laaksonen [26.01.2004 14:05:23]

#

Niinhän sen voit selvittää, että vertailet alkuperäistä ja muuttunutta tiedostoa heksaeditorilla. :)

thefox [27.01.2004 10:05:34]

#

Oliskohan siinä joku bufferointi (vaikkapa 512 tavua) ja kirjoitat sitten lopussa koko tuon bufferin etkä oikeaa datan määrää (<512). Vaikea sanoa tietämättä miten olet toteuttanut.

sooda [27.01.2004 10:05:38]

#

se ei nyt ole enää 1,01234... mutta vertailin niitä ja tossa toisessa näyttäisi olevan liikaa vbCrLf:ää. mutta mistä tämä voisi johtua? pitääkö serverin antamasta infosta irrottaa jotain pois?
muok: toteutin silleen että kun pyydetää tiedostoa niin avataan ko. tiedosto omalta koneelta binäärimuodossa ja aina kun tulee dataa servulta niin tungetaan se tiedostoon. Kun socketti sulkeutuu(=kaikki tieto siirretty) niin suletaan tiedostokin. Olen myös yrittänyt silleen että laitan ne yhteen globaalimuuttujaan joka sitten tungetaan kaikki yhdessä tiedostoon lopussa mutta sama ongelma.

thefox [28.01.2004 11:34:53]

#

Olisiko mahdollista nähdä hieman koodia toteutuksesta?

sooda [28.01.2004 17:07:14]

#

no tossa vähän, koko sorsa on sikaiso...

Private Sub ws2_Close()

    Close
    If fileState = "getlist" Then ListaaTiedostot
    If fileState = "getfile" Then
        vasemmalla.Visible = False
        Close #1
        BytesLeft = 0
        UpDateLocalFiles dasPath
    End If
    fileState = ""
    vasemmalla.Visible = False
    ws2.Close
    ilmoita "*** Tiedostoyhteys suljettu, datat siirretty"

End Sub

Private Sub ws2_DataArrival(ByVal bytesTotal As Long)

    Dim tieto As String
    If fileState = "" Then Exit Sub
    ws2.GetData tieto, vbString
    If fileState = "getlist" Then
        TiedostoListaus = TiedostoListaus & tieto
    ElseIf fileState = "getfile" Then
        Put #1, , tieto
        BytesLeft = BytesLeft - bytesTotal
        vasemmalla.Caption = "Tavuja vielä siirrettävänä: " & BytesLeft
    End If

End Sub

toi filu on siis auki tossa kohtaa missä sinne laitetaan dataa, binäärimuodossa siis.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta