- Internetprogrammering 00/01 -

Sidan och exemplen kommer kanske modifieras eller kompletteras något

Exempel

Dvs fler exempel som kompletterar föreläsningarna samt ger ledningar eller grundstommar till vissa laborationer.

Alla exempel är copyright Björn Eiderbäck, bjorne@nada.kth.se, men dom får fritt användas och förändras i icke kommersiella syften.

Innehåll

Socketar

Meddelandesystem baserat på socketar

RMI

Transport av seriealiserat objekt från klient till server
Callbackrutin
Meddelandesystem baserat på RMI

CORBA

Callbackrutin
Kylanläggning
Meddelandesystem baserat på CORBA

HTML, CGI och Perl


Socketar


Meddelandesystem baserat på socketar

En delmängd av det meddelandesystem som skall konstrueras i laboration 6.
Kommer i både Java- och Smalltalkversion (det senare för att illustrera hur man kan göra det hela i ett radikalt annorlunda programspråk). Då Smalltalkversionen inte är central kommer den senare (efter RMI- och CORBAbeskrivningarna är klara).

Exemplet saknar dock

Exemplet hanterar dock en del saker som inte är obligatoriska i laborationen

Kort beskrivning

För att göra det hela enkelt har vi valt att använda en syntax likande CGI-bins GET, dvs på formen
KOMMANDO?ARGUMENT1?ARGUMENT2 osv.
Detta gör också att den speciellt intresserade enkelt kan göra en vanlig webläsare (eller snarare ett web-dokument) till klient. Detta fordrar dock några smärre anpassningar av servern. Ovanstående kommando givet från en webläsare se ut i stil med följande:
GET /KOMMANDO?ARGUMENT1?ARGUMENT2 HTTP/1.1
Accept: image/gif, image/x-bitmap .....osv .....
Vilket ju innebär att servern måste "känna igen" att det är en webklient (genom att det hela börjar med GET). Ifall vi nu vill inkludera denna finess.

Syntax

En syntax liknande den som används av GET vid CGI-bin används.
Dvs ett kommandonamn följt av noll eller flera argument åtskiljda av frågetecken (?).
kommando ::= sträng[ARGUMENT]
ARGUMENT ::= ?sträng[ARGUMENT]
Exempel
Skicka meddelande till användare med ID 23.
messageToID?23?Hej här är mitt meddelande

Kommandon

Jag har valt att implementera följande kommandon:
 
Kommando och argument Beskrivning av argument Kort beskrivning
help   Servern returnerar en lista med alla kommandon.
connect?name?host?port name = användarnamn
host = klientens värddator
port = port på vilken klinten lyssnar efter meddelanden
Anslut en klient.
Servern returnerar klientens id-nummer
listIDs   Returnerar en lista av alla klienters identifierare
listUsernames   Returnera en lista av alla klienters användarnamn
messageToID?id?message id = mottagarens id
message = meddelande till mottagaren
Skickar ett meddelande till mottagare med angivet id
userNameForID?id id = någon användares id Returnerar användarnamnet för en användare med identiteten id

Implementation

Exemplet är uppdelat på delmoment:


RMI

Transport av seriealiserat objekt från klient till server

Ett litet exempel på hur vi kan konstruera en klass och ett objekt på klientsidan och skicka det till en server för exekvering.
Mer detaljerad beskrivning och kod.


Callback i RMI

Ett exempel på hur man kan konstruera en klass på klientsidan, instansiera den, skicka en referens till denna instans till servern samt från servern skicka ett meddelande till instansen (dvs en metod som utförs hos klienten).
Mer detaljerad beskrivning och kod.


Meddelandesystem baserat på RMI

Ungefär samma meddelandesystem som det vi gjorde baserat direkt på socketar implementeras mha RMI.
Mer detaljerad beskrivning och kod.


CORBA

Några exempel konstruerade med CORBA.


Callback i CORBA

Ett litet exempel som illustrerar hur en klient kan deklarera ett objekt som kan anropas av servern.
Baseras på Hello World-exemplet i CORBA-föreläsningen  (F10). Jämfört med detta exempel lägger vi till ett objekt i klienten som skickas till servern. Då metoden sayHello i servern anropas så anropar servern i sin tur det HelloCallback-objekt som skickas med som parameter från klienten (dvs ett objekt hos klienten anropas).
Mer detaljerad beskrivning och kod.

Kylanläggning

Baserat på callbacks som i föregående exempel konstruerar vi en enkel kylanläggning. Servern är tänkt att motsvara en termometer. En klient kan ansluta och registrera ett objekt som skall anropas om temperaturen förändras.
I första versionen kan servern endast hantera en klient i taget. I version 2 kan servern hantera flera samtidiga klienter.
Mer detaljerad beskrivning och kod.


Meddelandesystem baserat på CORBA

Meddelandesystemet implementerat i CORBA. Lite mer funktionalitet än i dom tidigare versionerna (dvs den socket- respektive RMIbaserade versionen). Men det blir inte direkt mer kod för det!
Mer detaljerad beskrivning och kod.

^ Upp till kursens hemsida.


Sidansvarig: <bjorne@nada.kth.se>
Senast ändrad 26 oktober 2000