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?
Niinhän sen voit selvittää, että vertailet alkuperäistä ja muuttunutta tiedostoa heksaeditorilla. :)
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.
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.
Olisiko mahdollista nähdä hieman koodia toteutuksesta?
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.
Aihe on jo aika vanha, joten et voi enää vastata siihen.