Varsinainen sohellus. Nyt on vanha pulassa. Pitäisi välittää dataa servun kautta. Vien binääritiedoston serverille ftp-siirtona Inet-komponentilla ja haen URLDownloadToFile-funktiolla. Kun vertaan näitä kahta tiedostoa, eivät ole vahingossakaan samoja. Kuitenkin ohjelma toimii (siis tietojen päivitys serverin kautta) välillä ja välillä taas ei. URLDownloadToFilen yhteydessä muutan aina kohdetiedoston nimeä, jottei luku tapahdu cachesta kuten putkan vinkissä on neuvottu. Mikä olisi varmempi tapa tiedonsiirtoon serverille ja takaisin? Kieli on VB5 tai VB6 ja serveri on Soneran. Tiedostot ovat noin kilotavun luokkaa tai alle.
Winsockilla pääset pitkälle
Avaat binäärisesti
Lähetät
Tallennat binäärisesti
Siinä tiiviissä paketissa :)
Millainen muutos on kyseessä? Ettei sattuisi niin, että FTP-siirto tapahtuu ASCII-muodossa, jolloin erilaiset rivinvaihtotavat (\r, \n ja \r\n) muutetaan yhteen ja samaan muottiin?
Voi kyllä olla, että joko inet-komponentti tai urldownloadtofile (tai molemmat) ei osaa binääritiedostoja, jostain syystähän ne eivät tekstimoodissa siirry samalla tavalla. Winsockilla tuo tosiaan hoituisi vaikka ftp-protokollalla (pitää muistaa asettaa binäärimoodi siirtoon, "TYPE I") aika helposti, tai vaikka jonkun serveripuolen php-skriptin avulla. http://www.vbip.com/winsock/
Kiitos Tesmu, mutta minulle ilmeisesti turhankin tiivistetysti. Avaa binäärisesti? Luen datan esim. muuttujaan vai?
Lähetät: Tarvii käyttäjätunnuksen ja salasanan, kuinkas ne Winsockilla?
Tallennat binäärisesti? Merkkijono binääritiedostoonko?
Mun tarvii nyt vaan editoida rärä samaa viestiä kun ei vastauslootaa näy missään?
URLDownLoadToFilellä näyttää sisältö tusinan verran tavuja lyhyemmältä. Toisinaan Inetillä viety tiedosto oli palvelimella 0 tavua. Siksi tein tarkistuksen eli luin tiedoston ja vertasin lähetettyyn. Muuten näytti samalta mutta lopusta puuttui aina pätkä. Täysin tajuton juttu meikäläiselle.
Sooda, voitko antaa tarkempaa vinkkiä kuinka Winsockilla saadaan ftp-yhteys?
Edit: Tuosta antamastasi linkistä taitaakin löytyä, kiitos.
Mutta minne vastausloota on kadonnut?
Vastauslaatikkoa ei näy, jos on itse viimeinen kirjoittaja. :)
Tuolla linkin takana on juu aika selkeä selitys miten ftp:tä käytetään. Ei pitäis olla paha homma. Oon tehny ftp:llä parikin juttua, kysy jos ei aukene. Vastauslootaahan ei näy niin kauan kun edellistä viestiä voi vielä muokata, jos on ketjun viimeinen kirjoittaja.
No niinpä tietysti ton vastauslootan kanssa. Tarkoitus on viedä palvelimelle päivitystiedosto. Kun joku käyttäjä käynnistää ohjelman, haetaan päivitystä palvelimelta ja jos uutta dataa löytyy se luetaan ja tallennetaan käyttäjän koneelle. Tämä homma toimi välillä noilla aiemmin mainituilla konsteilla muttei aina.
Palvelin ei tue PHP:tä. Onko sinne mahdollista perustaa lokero, jonne on pääsy vain tietyillä käyttäjillä tai niin että tiedoston lataus vaatii salasanan. Tiedon voisi myös kryptata jottei se näy sivullisille.
Sooda, voisitko vähän jeesata. En löytänyt Winsockille esimerkkiä ftp-protokollalle eli miten määrittelen siirrettävän tiedoston servulle ja clientille. Komentolistauksen mukaan Winsockilla voisi tehdä moniakin juttuja mutta selkeä esimerkki puuttuu. Vai Kannattaako sittenkin käyttää Inet-komponenttia molempiin suuntiin. Kuinka Inetillä saadaan ftp-yhteys anonyymina vai saako?
Sille Inet-kontrollille saa muistaakseni määritettyä yhteyttä avattaessa että tapahtuuko siirto binääri- vai tekstimuodossa. Ja tuo oli muistaakseni valinnainen parametri, oletuksena todennäköisesti sitten tekstimuoto?
En löytänyt tuota parametria. Erilaisia protokolleja voi kyllä määrittää kuten HTTP, HTTPS, FTP.
itseasiassa Inet komponentillä saat tiedoston ladattua tällätavalla netistä ja jopa silleen, että tiedosto ei tärvelly.
Private Sub Form_Load() Dim data() As Byte data = Inet1.OpenURL("http://osote.com/tiedosto.exe", icByteArray) 'haetaan dataan binaarisesti tiedosto Open "C:\hassufilu.exe" For Binary As #1 'avataan binaarisesti tiedosto Put #1, LOF(1) + 1, data 'heitetään tiedostoon tavaraa Close #1 'suljetaan se End Sub
Tietysti setä voin mielelläni jakaa sinulle http://www.animaker.org tuon softan update toolin lähdekoodin. Siinä asia hoituu hyvin helposti winsockilla.
Kiitos tesmu. olihan tuo Inetin helpissäkin. (Vasta eilen löysin koko helpin). Jos homma hoituu luotettavammin Winsockilla ja ilman PHP-skriptejä niin mielelläni näkisin tuon lähdekoodin.
Maailmassa monta on ihmeellistä asiaa... Tuo URLDownloadToFile-funktio tuppasi kuitenkin vanhaa tietoa vaikka latasin tiedoston aina uudelle nimelle. Sain homman toimimaan tällä OpenURL-metodilla mutta en mallin mukaan vaan vahingossa löytyneellä lauseella.
Aihe on jo aika vanha, joten et voi enää vastata siihen.