Verkko, asetukset, tulostaminen - Demo 7
Toteuta seuraavat WPF-ohjelmina.
Tehtävä 1 (25%)
Ohjelmoi yksinkertainen WWW-palvelin, joka osaa seuraavat asiat:
- Palvelin vastaa portista 9501 eikä portista 80 kuten normaalisti WWW-palvelimet
- Palvelin osaa vain ja ainoastaan palauttaa satunnaisesti arvotun aforismin yksinkertaisen
HTML-dokumentin sisällä esim.
<html> <head> <title>Aforismikone</title> </head> <body> <h1>If at first you don't succeed, you must be a programmer.</h1> </body> </html>
- Aforismit luetaan palvelimen käynnistyessä tekstitiedostosta.
- Palvelin vastaa vain GET-pyyntöihin. Palvelinta ei kiinnosta selaimen pyynnössä mikään muu kuin, että kyseessä on GET-pyyntö eli ensimmäinen rivi alkaa sanalla GET. Pyynnön muulla sisällöllä (riveillä) ei ole palvelimen toimintaan mitään vaikutusta. Tarkoitus ei ole toteuttaa koko HTTP-protokollaa.
- Palvelimen on toimittava, kun sitä kokeilee tavallisella WWW-selaimella kirjoittamalla osoitteeksi
http://koneen.osoite.example:9501/ihan.mita.tahansa
Huomatkaa, että HTTP-protokolla edellyttää palvelimen lähettävän ainakin seuraavat tiedot. Huomatkaa erityisesti välttämätön tyhjä rivi:
HTTP/1.1 200 OK Content-Type: text/html Tästä alkaa varsinainen html-dokumentti...
- Palvelin tulostaa omaan ikkunaansa lokia sille lähetetyistä pyynnöistä. Lokista näkyvät kaikki selaimen palvelimelle pyynnön yhteydessä lähettämät rivit.
Vinkki: HTTP. Muistakaa kutsua Flush-metodia aina, kun kirjoitatte verkkostriimiin.
Tehtävä 2 (25%)
Kirjoita yksinkertainen sähköpostin lähetysohjelma seuraavilla toiminnoilla:
- Ohjelma kysyy lähettäjän sähköpostiosoitteen, lähettäjän nimen, vastaanottajien sähköpostiosoitteet ja nimet, viestin otsikon ja varsinaisen viestin
- Ohjelma ilmoittaa jos viestin lähettämisessä tuli jokin ongelma
- Käyttäjä voi itse valita onko kukin viestin vastaanottajista TO:-, CC:- vai BCC:-kentässä
- Ohjelma tallentaa lähettäjän osoitteen ja nimen Windowsin rekisteriin josta ohjelma lukee nämä aina ohjelman käynnistyessä ja tarjoaa käyttäjälle oletuslähetystietoina.
- Ohjelma muistaa kaikki ohjelmalla yhdellä käyttökerralla lähetetyt sähköpostiviestit. Seuraavalla käynnistyskerralla aloitetaan taas tyhjästä. Viestejä ei ole tarkoitus tallentaa rekisteriin tms.
- Ohjelmassa voi määritellä viesteissä käytettävän signaturen eli allekirjoituksen. Tämä tallennetaan myös rekisteriin ja ladataan sieltä ohjelman käynnistyessä. Jos signature on määritelty niin se lisätään automaattisesti kaikkien lähetettyjen viestien loppuun ja erotetaan varsinaisesta viestistä merkinnällä: -- (viivaviivavälilyönti).
- Ohjelma osaa siististi tulostaa käyttäjän valitsemalle tulostimelle joko yksittäisen lähetetyn viestin tai kerralla kaikki viestit. Yhdelle paperille tulostetaan aina vain yksi viesti vaikka paperille voisi mahtua useampikin. Viestin tulosteessa pitää näkyä viestin lähettäjän tiedot, lähetysaika, vastaanottajien tiedot ja varsinainen viestin sisältö sekä mahdollinen signature.
Tehtävä 3 (50%)
Ohjelmoi oma IRC-asiakasohjelma, joka osaa seuraavat asiat:
- Käynnistyessään ohjelma kysyy käytettävän IRC-palvelimen osoitteen, käyttäjän nimen sekä IRC:ssä käytettävän nickin (lempinimi tms.)
- Ohjelma osaa ottaa yhteyden pyydettyyn IRC-palvelimeen
- Ohjelma liittyy automaattisesti kurssin IRC-kanavalle (#appro, sijaitsee IRCNET-verkossa, käyttäkää palvelimena esim. irc.jyu.fi)
- Ohjelmalla voi liittyä myös mille tahansa muulle kanavalle. Eri kanavien keskustelut pidetään erillään toisistaan eli jokaista kanavaa varten pitää luoda joko oma ikkuna tai jokin muu kontrolli.
- Ohjelmalla voi seurata kanavilla käytävää keskustelua ja osallistua keskusteluun. Ohjelma osaa myös Actionit.
- Ohjelma pitää muistissaan kaiken käydyn keskustelun (loki) ja käyttäjä voi halutessaan tulostaa haluamansa kanavan keskustelun haluamalleen tulostimelle tai tallentaa siististi muotoiltuun tekstitiedostoon. Loki ei säily ohjelman eri käyttökertojen välillä vaan on aina tyhjä ohjelman käynnistyessä.
- Ohjelmalla on myös helppo poistua halutulta kanavalta. Kanavalta poistumisen jälkeen kyseisen kanavan keskustelua ei voi enää nähdä tai tulostaa tai tallentaa.
- Ohjelma ei näytä suoraan protokollatason viestejä vaan siistii ne vastaamaan tyypillisen IRC-ohjelman esitystapaa. Epäolennaiset viestit voi suoraan piilottaa. Ts. jos ohjelmasi ei vielä tue jotakin IRC-protokollan viestiä niin piilota kyseinen viesti.
- Ohjelma osaa automaattisesti tallentaa .config-tiedostoon käyttäjän nimitiedot, nickin ja käytetyn IRC-palvelimen. Seuraavalla käyttökerralla näitä tietoja tarjotaan valmiina ja käyttäjä voi suoraan kuitata ne tai muuttaa halutessaan.
- Ohjelman käyttöliittymä mukautuu siististi ikkunan kokoon.
- Ohjelma osaa automaattisesti tallentaa .config-tiedostoon myös ikkunan koon ja seuraavalla käynnistyskerralla käynnistyy suoraan samassa koossa kuin oli edellisellä käyttökerralla.
- Ohjelma osaa tallentaa .config-tiedostoon myös tiedot kaikista kanavista joilla käyttäjä on ohjelmaa suljettaessa. Ohjelman seuraavalla käynnistyskerralla ohjelma antaa valita mihin edelliskerran kanavista käyttäjä haluaa suoraan liittyä.
- Ohjelma selviää siististi seuraavista tilanteista:
- Annettuun IRC-palvelimeen ei saadakkaan yhteyttä
- Annettu nick on jo käytössä
- Yhteys IRC-palvelimeen pysyy auki vaikka käyttäjä ei pitkään aikaan kirjoittaisi mitään (PING PONG)
- Käyttöliittymän toteutus on vapaa kunhan vaaditut toiminnot löytyvät. Suositeltavaa on katsoa mallia valmiista IRC-ohjelmista.
Vinkkejä: Kokeile kommunikoida IRC-palvelimen kanssa Telnetin avulla. IRC-protokolla suomeksi. Alkuun päästäksesi tarvitset USER- ja NICK-komentoja. Esimerkkiloki IRC-protokollasta

Käyttäjien kommentit