Morjensta
Jossain aiheessa taisin mainita, että olen harjoittelemassa C++. No, nyt tekisi mieli koittaa päästä nettiin.
#include <windows.h> int main(void) { // mennään Ohjelmointiputkan sivulle ShellExecute(0, NULL, "https://www.ohjelmointiputka.net/", NULL, NULL, SW_SHOWNORMAL); return 0; }
Tämä avaa oletusselaimen (vai Explorerin?) ko. sivuun. Nyt pitäisi vaan tehdä ohjelma jossa formiin kirjoitetaan sivu ja sitten sinne siirryttäisiin. Selaimen olisi kiva myös joskus tukea cookieita ja istuntoja. Myös sivuhistoria ei olisi pahitteeksi.
Ensimmäisen osan, eli nettiin pääsemisen formin kautta ei uskoisi olevan kaikille paha ongelma. Cookiet ja istunnot & sivuhistoria voi tuottaa jo ongelmia vähän enemmän.
Jos haluaisi oikeasti tehdä selaimen itse, eli ei siis käyttää valmista selainmoottoria, niin se sivun näyttäminen siinä on kaikkein isoin homma. Evästeet ja sivuhistoria on siihen verrattuna aivan triviaaleja juttuja.
Jos näin on, niin miten/mihin evästeet ja sivuhistoria pitäisi tallentaa? Esimerkiksi normaaliin tekstitiedostoon ja lukea sieltä?
Vaikkapa. Esimerkiksi Firefox tallentaa ne sqlite -tietokantaan.
Ookkei... Onko jollain ideoita, että miten pitäisi päästä toteuttamaan sivun näyttämistä?
Aloita vaikka siitä, että teet vuoden verran jotain vähän helpompaa. >_> Nettiselain on iso homma, ja jos olet "aloittelemassa C++:aa", se ei missään tapauksessa ole sinulle ajankohtainen asia.
Pitää opetella jotain graafista ohjelmointia, mieluiten tietysti GUI-kirjastolla (esim. wxWidgets) ja nettiohjelmointia (socketit sekä HTTP-protokollan toiminta) sivujen ja kuvien yms. lataukseen. Sitten tarvitaan kovasti ihan tavallista C++:aa, että siitä ladatusta sivusta saa jotain tolkkua ja että osaa sen perusteella piirrellä oikeita asioita ruudulle. Ja edelleenkin näistä vaikein on se oikeiden asioiden piirtely.
Taisipa mieleni muuttua kun luin viestisi... No, oli minulla toinenkin idea, joka tuskin on niin hankala: Sähköpostin lähetys.
Eli, pystyisi lähettämään mailia vaikka osoitteesta poutasaa@kolumbus.fi osoitteeseen matti.meikalainen@hotmail.com. Eli, määritettäisiin vastaanottaja, lähtevän postin palvelin ja viesti. Onko yhtään helpompaa?
Sähköpostin lähettäminen on periaatteessa hyvin helppoa.
Otat TCP-yhteyden sähköpostipalvelimen porttiin 25 ja sitten juttelet seuraavasti: (> merkillä siis mitä sinne lähetetään ja < merkillä on esimerkkivastaukset)
>HELO
<250 smtp.ohjelmointiputka.net Hello, pleased to meet you
>MAIL From: <Macro@domain.com>
<250 <Macro@domain.com>... Sender ok
>RCPT To: <reijo@osoite.fi>
<250 <reijo@osoite.fi>... Recipient ok
>DATA
<354 Enter mail, end with "." on a line by itself
>From: Macro@domain.com
>Subject: Testi
>Tekstirivi yksi
>Tekstirivi kaksi.
>.
<250 ABC23456 Message accepted for delivery
>QUIT
<221 smtp.ohjelmointiputka.net closing connection
Näyttäisitkö C++lla miten tuo toteutettaisiin tuolleen "yksinkertaisesti", että mitä kirjoitetaan mihinkin?
Osaatko käyttää muuttujia, tunnetko tietotyypit? Osaatko kirjoittaa yksinkertaisen yhteenlaskuohjelman, joka summaa lukuja? Sujuvatko ehtolauseet ja silmukat ja funktiot luonnostaan? Entä hallitsetko omien tietotyyppien määrittelemisen sekä taulukot, osoittimet ja viittaukset kuin vettä vain?
Jos vastasit kaikkiin "kyllä", onneksi olkoon, olet valmis tekemään hyvin yksinkertaisen sähköpostinlähetysohjelman vaikka SDL_net-kirjaston avulla – osaat varmaan itse selvittää, miten se toimii.
Jos taas kaikki vastaukset eivät olleet myöntäviä, laske tavoitteitasi vielä paljon, paljon alemmas, lue C++-oppaan julkaistut osat ja opettele esitellyt asiat hyvin huolellisesti; kaikki nuo tiedot ovat tarpeen, jotta voisit joskus tehdä kunnollisia ohjelmia.
Silmukat eivät mene vielä niin hyvin kuin haluaisin, mutta opettelen ne tässä viikolla. Myös osoittimet ja viittaukset eivät ole sydäntä lämmittävä asia. Laskuohjelman tekee helpolla.
Eikö tätä voi tehdä ilman erillisiä apukirjastoja? Siis, johonkin kirjoittaa vaan noita...
Ps. Nimen voisi muuttaa.
Siis sää asennat ton apukirjaston ja käytät vaan sen funkkareita sun ohjelmassas. Tietenki sää joudut kirjoittamaan sen koodin IDEen tai tekstieditoriin... :S
Esim #include <iostream>
Sisällyttää kirjaston, jonka nimi on iostream.
Suosittelisin, että opettelet eka perusteet ja sen jälkeen alat miettimään tuota ohjelmaa.
Eihän ruudulle tulostettavaa tekstiäkään "johonkin kirjoiteta", vaan sen tulostamiseen käytetään kirjastoa, C++:n standardikirjastoa. Netti on paljon mutkikkaampi asia, ja rivejäkin tulee jonkin verran enemmän. Suosittelen englannin kielen osaamista, jotta voit lukea englanninkielisiä ohjeita, joita löytyy tästä aiheesta niinkin helpoilla sanoilla kuin SDL_net example. (Voit tietysti käyttää myös Berkeley-socket-rajapintaa, Windowsissa Winsock. Itse asiassa myös SDL_net käyttää sitä.)
Aihe on jo aika vanha, joten et voi enää vastata siihen.