Miten saisin otettua yhteyden nettiin jollekin palvelimelle ja ladattua sieltä tiedostoja?
Wiunsockilla lähetät http headerin jossa pyydät tiedostoa.
Tässä Mureankuhan keskustelussa oli pikkaisen infoa, tuolla pääsee ainakin alkuun. Sitten wgetin lähdekoodia voi tutkiskella, tai miksei jopa Mozilla Firefoxin, jos uskallusta riittää. Homma on kuitenkin lyhyesti sanottuna vaikeaa.
Palvelemilla on käynnissä ohjelmia, jotka vastaanottavat ja ymmärtävät tietyssä formaatissa olevia pyyntöjä. Yleisimmin tähän tarkoitukseen käytetyt protokollat ovat HTTP ja FTP.
HTTP
ftp://ftp.rfc-editor.org/in-notes/rfc2616.txt
FTP
ftp://ftp.rfc-editor.org/in-notes/rfc959.txt
Yksinkertaisen HTTP-pyynnön voi tehdä helposti vaikka telnet ohjelmalla.
> telnet www.google.fi 80 GET /index.html HTTP/1.1 Host: www.google.fi
Tähän vastauksen www.google.fi palauttaa perushakusivun. index.html:n paikalle voi vaihtaa minkä tahansa tiedoston, jonka haluaa ladata. Serveri palauttaa pienen HTTP headerin, jossa kerrotaan lähetettävän tiedoston tyyppi ja koko sekä tietenkin itse tiedoston.
Google hakukin tehdään käyttämällä GET:iä. Useimmat formit lähetetään kuitenkin käyttäen POST tapaa.
> telnet www.google.fi 80 GET /search?hl=fi&q=HTTP+POST&btnG=Google-haku&meta= HTTP/1.1 Host: www.google.fi
Jos haluat tehdä saman C-koodissa, avaat vain soketin porttiin 80 ja kirjoitat siihen sokettiin samat mitä tuolle telnetille.
Edit: noi molemmat pyynnöt vaativat loppuun kaksi rivinvaihtoa, jotka koodi-tagi näyttää poistavan.
Käyn tutkiskelemaan mozillan koodia(uskallusta todella pitää olla :D)Toivottavasti löydän vastauksen... Kiitos teille kaikille!
Ei nyt kannata FireFoxin sorsaa lähteä sentään noin yksinkertaisen asian takia tutkimaan :) Googleta vain "winsock c download file" niin luulisi löytyvän ihan koodiesimerkkejäkin jos FooBat:n tarjoilema teoria meinaa mennä yli hilserajan.
Asialle omistautuneita kirjastojakin löytyy, mm. libcurl: http://curl.haxx.se/ Tällaisten etuna on se, että ne osaavat useimmiten mm. forwardit.
Mistä ton libcurlin voi ladata?(niil on aika sekavat sivut)
Kun kävin kattomas noit, nii siäl oli eri systeemeille niitä tiedostoja(DOS,Windows...)Jos fawkz(tai joku muu) vois laittaa linkin suoraan DOSsin lataus linkkiin,nii olis ihan kiva :D
Ai DOS:lle koodaat? Suosittelisin vaihtamaan Windowsiin (tai unixiin) :-) DOS + Internet = ei hyvä. libcurlia ei DOS:lle löydy, ainoastaan itse ohjelma, eli curl: http://www.rahul.net/dkaufman/curl-7.10.5-DOS.zip Voit tietysti käyttää tätä omasta ohjelmastasi jos sinun välttämättä täytyy koodata DOS:lle.
No kai voisin wintoosaan siirtyä,mutta sivut on silti sekavat :D!En eka meinannu löytää wintoosalle libarya, mut wizardilla löyty...
Miten muka on vaikeaa?
Painaa Download, sitten painaa Packages otsikon alta Win32.
Katos joo... Niinpäs siel onkii semmonen juttu...
Tai sitten voit käyttää wxWidgetsiä.
wxURL url("https://www.ohjelmointiputka.net/keskustelu/"); wxInputStream *tiedosto; tiedosto= url.GetInputStream(); while(!tiedosto.Eof()) ....
Aihe on jo aika vanha, joten et voi enää vastata siihen.