Kapittel 9. Distribusjon. Fjernbruker. Tjenermaskin LAN WAN. Nærbruker. Figur 9-1: En enkel klient/tjener distribusjon

Like dokumenter
Socket og ServerSocket

EKSAMEN. Programvareutvikling. INNFØRING MED PENN, evt. trykkblyant som gir gjennomslag

Java RMI. Introduksjon. Markus Foss Hans-Gunnar Vold

INF1010 våren 2017 Onsdag 25. januar. Litt om unntak i Java

TOD063 Datastrukturer og algoritmer

Løsningsforslag Test 2

Synkronisering I. Kapittel 6. Tråd A. ferdig. t.varsle() u.vente() Tråd B. ferdig. tid

UNIVERSITETET I OSLO

Stein Gjessing. Institutt for informatikk. Universitetet i Oslo. Institutt for informatikk

Algoritmer og datastrukturer Kapittel 11 - Delkapittel 11.2

NB!!! Veldig korte svar er gitt her. Disse burde det vært skrevet mer på ved en eksamen..

Avdeling for ingeniørutdanning Institutt for teknologi

EKSAMEN. TILLATTE HJELPEMIDLER: Alle trykte og skrevne. INNFØRING MED PENN, evt. trykkblyant som gir gjennomslag

INF1010 våren 2019 Onsdag 30. januar. Mer om unntak i Java (med litt repetisjon av I/O først)

Synkronisering II. Kapittel 7. Betingelse oppfylt (0) liste. tråd-deskriptor. venteliste. tråd-deskriptor. tråd-deskriptor.

HØGSKOLEN I SØR-TRØNDELAG

JavaServer Pages (JSP)

/** * */ public Aktivitet(String navn, String krop, Objekt objekt, Model model) { if(funk.od) System.out.println(" - " + navn + " : " + krop);

INF1010, 22. mai Prøveeksamen (Eksamen 12. juni 2012) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

import java.io.*; import java.util.*; import javagently.text;

INF 1010, vår 2005 Løsningsforslag uke 11

INF2100. Oppgaver 26. september til 1. oktober 2007

Leksjon 7. Filer og unntak

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) Løsningsforslag

Kapittel 8: Programutvikling

Eksamen. Objektorientert Programmering IGR 1372

Inf1010 Våren Feilsituasjoner og unntak i Java. Stein Gjessing, Institutt for informatikk, Universitetet i Oslo

Å lese tall fra en fil, klassen Scanner

Hittil har programmene kommunisert med omverden via tastatur og skjerm Ønskelig at data kan leve fra en kjøring til neste

INF Løsning på seminaropppgaver til uke 8

Repetisjon. INF gruppe 13

INF1010 Eksamenstips. Løsningsforslag prøveeksamen del 1.

Program socket server

Mer objektorientert programmering

INF1010 våren 2018 tirsdag 23. januar

Sortering med tråder - Quicksort

IN Notat om I/O i Java

Eksamen i Internetteknologi Fagkode: ITE1526

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister

GUI («Graphical User Interface») del 2

Oversikt. Feil i programmet hva skjer? Array indeks utenfor sine grenser. Inf1010 Våren Feilsituasjoner og unntak i Java

Inf1010 Våren Feilsituasjoner og unntak i Java. Stein Gjessing, Institutt for informatikk, Universitetet i Oslo

La oss begynne med en repetisjon av hva som skjer når du kjører Javaprogrammet

INF Notater. Veronika Heimsbakk 10. juni 2012

Oversikt. Feil i programmet hva skjer? Array indeks utenfor sine grenser. Inf1010 Våren Feilsituasjoner og unntak i Java

INF1010. Grensesnittet Comparable<T>

Inf1010 Våren Feilsituasjoner og unntak i Java. Stein Gjessing, Institutt for informatikk, Universitetet i Oslo

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister Videre

TDT4100 Objektorientert programmering

UNIVERSITETET I OSLO

Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; }

HØGSKOLEN I SØR-TRØNDELAG

INF Notat om I/O i Java

Eksamen Objektorientert Programmering 2012

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) og i emnet INF100-F Objektorientert programmering i Java I Løsningsforslag

Løsningsforslag Eksamen V08. Oppgave 1. Oppgave 1.1. Oppgave 1.2. Oppgave 1.3. Se i boka/forelesningsnotatene:-) Se i boka/forelesningsnotatene:-)

Gjøre noe i hele treet = kalle på samme metode i alle objekten. Java datastruktur Klassestruktur

Tilstandsmaskiner med UML og Java

JSP - 2. Fra sist. Hvordan fungerer web? Tjenerside script HTML. Installasjon av Web-tjener Et enkelt JSP-script. Ønsker dynamiske nettsider:

Jentetreff INF1000 Debugging i Java

Java RMI (Remote Method Invocation) Gruppe 9: Ivar Steien Rasmussen Tom Anders Dalseng Andreas Petlund

INF2440 Prøveeksamen, løsningsforslag, 20 mai Arne Maus PSE, Inst. for informatikk

Eks 1: Binærtre Binærtretraversering Eks 2: Binærtre og stakk

Leksjon 7. Filer og unntak

UNIVERSITETET I OSLO

Stein Gjessing, Institutt for informatikk, Universitetet i Oslo

TDT4100 Objektorientert programmering

Løsningsforslag til eksamen i INF1000 våren 2006

INF2100. Oppgaver 23. og 24. september 2010

Distributed Component Object Model. Utvikling av distribuerte applikasjoner. Utvidelse av COM for støtte av distribuerte objekter

Oversikt. Array indeks utenfor sine grenser. Feil i programmet hva skjer?

OPPGAVE 5b og 8b Java Kode

Eksamensoppgave Vår 2012 Ordinær eksamen Bokmål. Videregående programmering. Eksamensdato: Studium/klasse: 2. klasse

Konstruktører. Bruk av konstruktører når vi opererer med "enkle" klasser er ganske ukomplisert. Når vi skriver. skjer følgende:

Litt om pakker og mest om data inn og ut

LC191D Videregående programmering Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring. Else Lervik, januar 2012.

Videregående programmering 6

Lenkelister. Lister og køer. Kopi av utvalgte sider fra forelesningen.

INF Våren Li' repe$sjon om Tråder og GUI. Stein Gjessing, Ins$tu' for informa$kk, Universitetet i Oslo. Ins$tu' for informa$kk

Kapittel 11: Unntakshåndtering. Java som første programmeringsspråk

Kapittel 11: Unntakshåndtering. Java som første programmeringsspråk

UNIVERSITETET I OSLO

Dagens tema: Kompilatorens struktur. De ulike modulene Prosjektet. Oppbyggingen Pakker i Java Avbrudd («exceptions») Enum-klasser i Java

INF100 Institutt for informatikk Universitetet i Bergen Øving 5

Innhold. INF1000 Høst Klasser og objekter. Uke 7: Mer objektorientert programmering Siri Moe Jensen

Forkurs INF1010. Dag 3. Andreas Færøvig Olsen Eivind Storm Aarnæs

Forkurs INF1010. Dag 3. Andreas Færøvig Olsen Gard Inge Rosvold Institutt for Informatikk, 15.

(MVC - Model, View, Control)

J2EE. CMP Entity Beans, Transaksjoner, JSP

INF 1000 (uke 2) Variabler, tilordninger og uttrykk

Tittel Objektorientert systemutvikling 1. Eksamenstid, fra-til Ant. oppgaver 6

Del 3: Evaluere uttrykk

INF2100. Oppgave 1, 2 og 3. Løsningsforslag til oppgaver 23. og 24. september Her er det mange mulige løsninger her er én: import java.io.

UNIVERSITETET I BERGEN Det matematisk-naturvitenskapelige fakultet

INF1010 våren Arv og subklasser - del 2

UNIVERSITETET I OSLO

Gjennomgang av eksamen H99

Eksamen INF1010 V2009 Del B prøveeksamen V2010 Vekt 60 %

Objektorientert Programmering Ekstraordinær eksamen 2014

Løsningsskisse, eksamen J2EE og distribuerte systemer 19.mai 2004

Transkript:

Kapittel 9 Distribusjon Tjenermaskin Fjernbruker LAN Nærbruker WAN Figur 9-1: En enkel klient/tjener distribusjon 195

Tjenermaskin Fjernbruker LAN Replikert tjener Nærbruker WAN Figur 9-2: Klient/tjener-konfigurasjon med replikert tjener 196 Kapittel 9

Tjenerklynge Klienter WAN Figur 9-3: Tjenerklynge Distribusjon 197

A B D C E Figur 9-4: Et peer-to-peer nettverk 198 Kapittel 9

navnetjener. (2) navnetjener.no (3) navnetjener med cache navnetjener.fongen.no (4) (1) Figur 9-5: DNS-oppslag av navnet www.fongen.no Distribusjon 199

sender: operasjon påbegynt mottager: operasjon ikke påbegynt melding Figur 9-6: Mens en melding er underveis er sender og mottager uenige om systemets tilstand 200 Kapittel 9

kl.10:40:56 kl.10:42:23 kompilering TestClass.class 10:40:56 TestClass.java 10:42:23 redigering Figur 9-7: Eksempel på feilsituasjon som følge av unøyaktige klokker. Fordi de to partene bruker sine egne klokker som tidsstempler på filene, later det til at class-filen ikke er ajour. Distribusjon 201

metodekall klient stub melding over nettverket skeleton metodekall tjener Figur 9-8: En RMI-konfigurasjon med stub- og skeleton-objekter 202 Kapittel 9

MOM MOM MOM MOM WAN MOM Figur 9-9: Slik inngår et MOM i en distribuert meldingsflyt Distribusjon 203

Forespørsel Buffer (kø) Buffer (kø) Svar Nettverksprogram Nettverksprogram Figur 9-10: Klient-tjener kommunikasjon via et meldingsgrensesnitt 204 Kapittel 9

import java.net.*; import java.io.*; public class SockClient { Socket s1; BufferedReader br; PrintWriter pw; // Konstruktøren setter opp TCP-forbindelsen public SockClient(String server, int port) throws Exception { s1 = new Socket(server,port); br = new BufferedReader(new InputStreamReader(s1.getInputStream())); pw = new PrintWriter(s1.getOutputStream(),true); // Send en String, vent på svar public String sendmessageandreceivereply (String message) throws Exception { pw.println(message); return br.readline(); // Stenger TCP-forbindelsen public void close() throws Exception { s1.close(); Listing 9-1: Klientside-klasse for en TCP-basert meldingtjeneste Distribusjon 205

import java.net.*; import java.io.*; public class SockServer extends Thread { ServerSocket s1; SockMessageHandler callback; public SockServer(int port,sockmessagehandler cb) throws Exception { s1 = new ServerSocket(port); callback = cb; start(); public void close() throws Exception { s1.close(); public void run() { try { while (true) { Socket s2 = s1.accept(); SockThread st = new SockThread(s2); catch (Exception e) { e.printstacktrace(); class SockThread extends Thread { Socket sock; BufferedReader br; PrintWriter pw; public SockThread(Socket s) throws Exception { sock = s; br = new BufferedReader( new InputStreamReader (s.getinputstream())); pw=new PrintWriter(s.getOutputStream(),true); start(); public void run() { try { while (true) { String message = br.readline(); if (message == null) break; 206 Kapittel 9

InetAddress ip = sock.getinetaddress(); String reply = callback.receive(message,ip); pw.println(reply); sock.close(); catch (Exception e) { Listing 9-2: Tjenerside-klasse for en TCP-basert meldingtjeneste. Legg merke til bruken av flere tråder i utføringen av koden Distribusjon 207

import java.net.inetaddress; public interface SockMessageHandler { public String receive(string message, InetAddress sender); Listing 9-3: Grensesnittet som må implementeres av tjenerkoden 208 Kapittel 9

public class SockMain implements SockMessageHandler { public SockMain() throws Exception { SockServer ss = new SockServer(1958,this); public String receive(string message, java.net.inetaddress sender) { System.out.println("Melding fra: " + sender.gethostaddress()); System.out.println(message); return "Meldingen har " + message.length() + " tegn"; public static void main(string[] args) throws Exception { new SockMain(); Listing 9-4: Tjenerprogram som benytter SockServer-klassen Distribusjon 209

public class SockMainClient { public static void main(string[] args) throws Exception { SockClient sc = new SockClient("localhost",1958); String reply = sc.sendmessageandreceivereply(args[0]); System.out.println("Svaret er: " + reply); Listing 9-5: Klientprogram som bruker SockClient-classen 210 Kapittel 9

Figur 9-11: Skjermbilde fra test med én tjener og to klienter. Merk hvordan meldingene fra to klienter blir flettet i tjeneren. Distribusjon 211

212 Kapittel 9