Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Tiedoston koko serveriltä (VB5 tai VB6)

Sivun loppuun

setä [11.03.2006 17:01:30]

#

Saako jotenkin Winsockin avulla selvitettyä serverillä olevan tiedoston koon ja jos on muuttunut imuroidaan se.

Antti Laaksonen [12.03.2006 01:33:34]

#

HTTP-otsikkotietojen alussa on kohta Content-Length, josta voi päätellä tiedoston koon. Yksi tapa voisikin olla pyytää palvelimelta hieman tiedoston alkua tämän tiedon saamiseksi. Tässä on jonkinlainen esimerkki:
http://www.vbip.com/winsock/winsock_http_08_01.asp

Blaze [12.03.2006 02:16:07]

#

Pelkät otsikot saa tekemällä HEAD-pyynnön GET:n sijasta. Muoto on muuten identtinen GET:n kanssa.

Antti Laaksonen [12.03.2006 10:52:23]

#

Blazen tapa on paljon parempi, ja minäkin opin uutta.

Meitsi [12.03.2006 11:52:39]

#

Jos haluaa tehdä todellisen tarkistuksen, onko tiedoston sisältö muuttunut, voi tehdä serverille php-skriptin joka laskee tiedoston md5 summan. Winsockilla vaikka sitten kutsuu tätä php-skriptiä http-headereita käyttämällä. Tämä vaatii tietenkin käyttäjän koneella tiedoston md5:den tutkimista. Siihen luulisi olevan valmiita funktioita tms. mutta yksi keino on jaella ohjelman mukana jotakin valmista konsolipohjaista md5-laskentaohjelmaa jota sitten omasta ohjelmastaan kutsuu. Tällöin vain täytyy olla perillä ohjelman levitysoikeuksista.

setä [12.03.2006 12:19:27]

#

Kiitokset vastauksista. Winsockin käyttö on minulle vielä outoa, joskus jonkun UDP-sovelluksen tein. Nyt olen lähettänyt dataa ftp:-serverille (Sonera, vaihtoehtoisesti MBnet) Inet-komponentilla ja toisella ohjelmalla lukenut dataa myös inet-komponentilla. Yhteyden muodostukseen tarvitaan käyttäjätunnus ja salasana mutta winsockilla ymmärtääkseni tiedoston voi downloadata ilman tunnuksiakin. Tarkoitus on siis tutkia jollain tavalla milloin ko. tiedosto serverillä on muuttunut (lisätty yksi tietue) ja downloadata se sitten. Soneran palvelin ei tue php-skriptejä. Voitko Blaze antaa tarkempaa vinkkiä kuinka HEAD-pyyntö tehdään?

Blaze [12.03.2006 13:32:20]

#

Kuten GET, mutta GET:n tilalla HEAD:

blaze@sakura ~ $ telnet sakura 80
Trying 127.0.0.1...
Connected to sakura.
Escape character is '^]'.
HEAD / HTTP/1.0

HTTP/1.1 200 OK
Date: Sun, 12 Mar 2006 11:31:30 GMT
Server: Apache
Last-Modified: Tue, 11 Oct 2005 16:45:01 GMT
ETag: "f7ccf-1ee-3a995d40"
Accept-Ranges: bytes
Content-Length: 494
Connection: close
Content-Type: text/html; charset=UTF-8

Connection closed by foreign host.

setä [12.03.2006 15:27:16]

#

Kiitos Blaze, mutta vielä jäi epäselväksi miten koodaan tuon VB:lle ihan yhteyden luomisesta alkaen. Minulla on palvelimella http://personal.inet.fi/atk/korant tiedosto hist06.dat, josta haluan selvittää koon tai viimeisen päivityshetken.

Blaze [12.03.2006 16:11:58]

#

Homma hoituu winsock-kontrollilla, jonkinlainen esimerkki esimerkiksi tuolla: https://www.ohjelmointiputka.net/koodivinkit/24126-vb6-tiedoston-haku-netistä-winsockilla
Haulla löytynee lisää.

setä [12.03.2006 17:15:47]

#

Kovasti olen haeskellut ja tuota soodan esimerkkiäkin tutkinut vaan en oikein tajunnut. Yritin mallin mukaan mutta sain vain virheilmoituksen väärä protokolla tai yhteystila siinä sendData-kohdassa. Homma toimii kyllä ftp-siirrolla mutta tuntuu vaan tyhmältä ladata koko filua jatkuvasti uudelleen ja uudelleen huomatakseen onko se muuttunut. Tiedosto on vajaa 60 kt joten ei siinä tosin aikaa paljoakaan kulu. Mutta ei mahdu muuttujaan joten itse filua ei Winsockilla saa ladattua.


Sivun alkuun

Vastaus

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

Tietoa sivustosta