Saako jotenkin Winsockin avulla selvitettyä serverillä olevan tiedoston koon ja jos on muuttunut imuroidaan se.
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.
Pelkät otsikot saa tekemällä HEAD-pyynnön GET:n sijasta. Muoto on muuten identtinen GET:n kanssa.
Blazen tapa on paljon parempi, ja minäkin opin uutta.
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.
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?
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.
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.
Homma hoituu winsock-kontrollilla, jonkinlainen esimerkki esimerkiksi tuolla: https://www.ohjelmointiputka.net/koodivinkit/
Haulla löytynee lisää.
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.
Aihe on jo aika vanha, joten et voi enää vastata siihen.