Abstract

This documet describes the News project TN in a course at the institution for "Datalogi och Numerisk Analys" at Lunds Tekniska Högskola at Lunds University with the name "Industrial Related Programming" (1998). The project involves programing of a simper News Server and -Client in the C++ language. Our sulution is to use the real NNTP protocoll described in RFC-977 as base for our protocoll. We Have Not, and DO NOT claim, to have fully implemented the RFC-997 protocoll in our server. We have only used parts of the implementation, and also added our own comands when neaded (with a x in front of the commad as in xaddgroup <groupname>).

The server is rather simpel and it does not take care of any realtime issues at all, but it works rather good anyway in a multiclient enviroment.

The client is a simpel text based client with a userunfriendly userinterface. It is menu driven in its structure and rather selfexplaining.

Innehållsförteckning

Inledning

Teori

Genomförande

Resultat

Utvärderande diskussion

Referenslista

Appendix

A. Klass diagram

B. Programlistningar

Inledning

Denna rapport beskiver vår newsläsare med namnet TN som är en förkortning på "The News".

Uppiften är att skriva en news-server och -klient som kan kommunicera med varandra och i den kommunikationen utbyta information om nyhetsgrupper och artiklar samt deras vara eller icke vara Klienten ska vara textbaserad och behöver bara kunna hantera tillägg och borttagning av artiklar och grupper samt listning av båda och läsning av artiklar. Det ska dessutom ske på ett intuitivt (och smakfullt) sätt. Servern ska kunna hantera flera uppkopplingar dock utan krav på hänsyn till eventuella realtidsprobem. Klienten fick inte vara slavisk utan skall själv kunna hantera kommandon, utskrifter samt hantering av nyhets-trädet.

I teoridelen av rapporten kan du läsa bakomliggande fakta och teorier. Genomförandekapitlet beskriver hur projektet har utförts och med vilka hjälpmedel. Resultatdelen beskriver hur fantastiskt bra allt blev till slut, och i utvärderande diskussion kan du se att det inte gjorde det. I övrigt finns mycket information för den vetgiriga i källkoden och klassdiagrammet.

Teori

Newsläsare implementeras med Client-Server teknik och som protokoll har vi valt att använda en modifierad variant av NNTP som är det "riktika" newsprotokollet som finns beskrivet i RFC-977 [1]. Eftersom vi inte behöver alla delar av protokollet har vi valt att endast implementera de delar som vi behöver samnt att lägga till en del nya komando vilket är tillåtet enligt RFC-977 [1] bara de nya komandona börjar med "x" tex xkillserver. Vi har implementerat hela programpaketet i C++ som är ett programspråk utvecklat av Stroustup [2].

Genomförande

Eftersom vi valt att använda NNTP protokollet som grund behövde vi inte designa ett protokoll vilket medförde att den inledande designen endast bestod av an enkel diskussions om vilka object som skulle ingå och varför. Vi bestämde oss snabbt för att försöka dela upp programmet i parallella spår så att viss utveckling kunde ske separat. De object vi valde att ha med i vår OMT-modell ses enklast i klassdiagrammet, appendix A, även om transmitt-klassen inte fanns från början.

I arbetet har vi använt oss av editorn Emacs och dess C++-mode för att formattera programmet. För att kompilera och länka har vi använt g++ version 2.7.2 som är en Gnu prudukt. För debug har en annan gnu-produkt, gdb, använts. Utväcklingen har skett i Unixmiljö på skolans datorer i huvudsak på Sun Sparc Ultra med viss felsökning på Sun Sparc Classic.

Resultat

Resultatet var fantastiskt. Flera saker fungerar. (Multipel Funktionalitet) Framför allt beter sig programmet som vi hade tänkt oss, vilket väl överensstämmer med krav-spec.

Utvärderande diskussion

TN är skrivet med en bantad version av NNTP. Detta innebär att man vid en eventuell nästa version lätt skulle kunna göra den ännu mer kompatibel med "riktiga" news-servers och -klienter. Många funktioner saknas dock fortfarande, och dessutom är hanteringen av artiklar inte särskilt lik praxis för News. Detta beror huvudsakligen på en brist i designen so m i sin tur beror att vi vill ha en enkel implementation.

En annan brist är användargränssnittet som visserligen är relativt intuitivt, men föga lättöverskådligt. Det hade kunnat lösas med ett GUI eller med ett system likande TRN.

Varken server eller klient stöder heller hantering av skivminne för att spara undan information mellan sessioner.

Eftersom ingen hänsyn har tagits till realtidsproblem skulle dessa kunna orsaka fel både i server och klient, även om vi inte hittat några av dessa än.

Vissa klasser i OMT-modellen har fått något olyckliga namn. T. ex är "transmitt" inte ett bra namn på den klass som heter så. För noggrannare beskrivning se [4]. (Du får ju läsa källkoden iallfall!)

OMT-modellen ser ut som den gör med avancerade trädstrukturer för att även kunna fungera offline. Vi har dock valt att hämta så mycket information som möjligt från servern för att hela tiden ha senaste version av allt. Det enda som inte är helt lämpligt i andra news-miljöer än TN är article-klassen som inte har helt lämpliga attribut. Det är dock en liten förändring att göra för att anpassa den standard-news.

Referenslista

[1] "RFC-977"

[2] B. Stroustrup, "The C++ Programming Language",3:uppl, Addison-Wesley, 1997

[3] P. Holm, "Overheadbilder, IRP del 1", Instutionen för DNA vid Lunds Universitet, Lund 97/98

[4] Flix Reychman Stefan "Zingo" Zivkovic "this", TN corp. Lund 98/03/03