Client-Server-Architekturen



Ähnliche Dokumente
Client-Server-Architekturen und Prozess-Kommunikation in verteilten Systemen

Client-Server-Architekturen und Prozess-Kommunikation in verteilten Systemen

Client-Server-Architekturen und Prozess-Kommunikation in verteilten Systemen

7.4 Verteilungsabstraktion in heterogener Umgebung

3. Stored Procedures und PL/SQL

Client-Server mit Socket und API von Berkeley

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

Objektbasierte Entwicklung

Formular»Fragenkatalog BIM-Server«

Sicherheit in Client/Server-Umgebungen

EasyWk DAS Schwimmwettkampfprogramm

CORBA. Systemprogrammierung WS

Prüfungsprotokoll der mündlichen Prüfung Verteilte Systeme 1678 (Bachelor Informatik)

Web Services stellen eine Integrationsarchitektur dar, die die Kommunikation zwischen verschiedenen Anwendungen

Unterprogramme. Funktionen. Bedeutung von Funktionen in C++ Definition einer Funktion. Definition einer Prozedur

Lizenzen auschecken. Was ist zu tun?

How-to: Webserver NAT. Securepoint Security System Version 2007nx

Man liest sich: POP3/IMAP

Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München

Musterlösung Übungsblatt 1 Netzprogrammierung WS 05/06

ABB i-bus KNX. Software-Information. Melde- und Bedientableau. Typ: MT 701.2

Web Sockets mit HTML5. Quelle:

Musterlösung Klausur SS 2004

Java Kurs für Anfänger Einheit 5 Methoden

Folgende Voraussetzungen für die Konfiguration müssen erfüllt sein:

Objektorientierte Programmierung

peer-to-peer Dateisystem Synchronisation

Anleitung zur Nutzung des SharePort Utility

Übungen zu Softwaretechnik

Installation mit Lizenz-Server verbinden

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Die Programmiersprache C99: Zusammenfassung

Software-gestützte Pufferung: Verteilte Dateisysteme. BP 2 Software-gestützte Pufferung: Verteilte Dateisysteme BP 2 BP 2 BP 2

Mail-Account Unimail mit der Einstellungen für Outlook Express 5.0

Installation von MailON2!

Client/Server-Systeme

Der lokale und verteilte Fall

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Effiziente Administration Ihrer Netzwerkumgebung

Wie können Sie eine Client Lizenz wieder freigeben?

Grundlagen verteilter Systeme

Ablaufbeschreibung für das neu Aufsetzen von Firebird und Interbase Datenbanken mit der IBOConsole

3 Programmiermodelle für parallele und verteilte Systeme

Grundlagen verteilter Systeme

Folgende Einstellungen sind notwendig, damit die Kommunikation zwischen Server und Client funktioniert:

Java RMI Remote Method Invocation

Delegatesund Ereignisse

1 Vom Problem zum Programm

Powermanager Server- Client- Installation

1 Voraussetzungen für Einsatz des FRITZ! LAN Assistenten

E.1 Object Request Brokers

Fassade. Objektbasiertes Strukturmuster. C. Restorff & M. Rohlfing

Enterprise Applikation Integration und Service-orientierte Architekturen. 09 Simple Object Access Protocol (SOAP)

FOPT 5: Eigenständige Client-Server-Anwendungen (Programmierung verteilter Anwendungen in Java 1)

Installationsvoraussetzungen

Szenario 3: Service mit erweiterter Schnittstelle

Psyprax GmbH. Wichtig für alle Netzwerkinstallationen: Psyprax GmbH

Mobile und Verteilte Datenbanken

Websites mit Dreamweaver MX und SSH ins Internet bringen

Übung: Verwendung von Java-Threads

Einstieg in die Informatik mit Java

Dieses HowTo darf nicht vervielfältigt oder veröffentlich werden ohne Einverständnis des Erstellers. Alle Angaben ohne Gewähr.

ObjectBridge Java Edition

Im Folgenden wird die Konfiguration der DIME Tools erläutert. Dazu zählen die Dienste TFTP Server, Time Server, Syslog Daemon und BootP Server.

Installationshinweise BEFU 2014

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

Client/Server-Systeme

MSDE 2000 mit Service Pack 3a

Lexware professional und premium setzen bis einschließlich Version 2012 den Sybase SQL-Datenbankserver

Welche HP KVM Switche gibt es

WLAN. 1. Definition. 3. Nutzungsmöglichkeiten

Update / Inbetriebnahme domovea Server. Update/Inbetriebnahme domovea Server Technische Änderungen vorbehalten

Verteilte Systeme. Verteilte Systeme. 9 Verteilte Dateisysteme SS 2015

TSM Information für Administratoren Include-Exclude-Listen

10.6 Programmier-Exits für Workitems

Systeme 1. Kapitel 10. Virtualisierung

NuVinci Harmony Software und Firmware. Anleitung in deutscher Sprache

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version September

Kurzanleitung zur Softwareverteilung von BitDefender Produkten...2

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

Verteilte Systeme CS5001

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Fakultät Angewandte Informatik Lehrprofessur für Informatik

Projektmanagement. Vorlesung von Thomas Patzelt 9. Vorlesung

Applet Firewall und Freigabe der Objekte

Installationsanleitung. Hardlock Internal PCI Hardlock Server Internal PCI

RARP, BOOTP, DHCP Wie ermittelt ein Client seine IP-Adresse?

Proxy. Krishna Tateneni Übersetzer: Stefan Winter

TechNote: Exchange Journaling aktivieren

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de

4. Network Interfaces Welches verwenden? 5. Anwendung : Laden einer einfachen Internetseite 6. Kapselung von Paketen

Thema IPv6. Geschichte von IPv6

Constraint-Algorithmen in Kürze - Mit der Lösung zur Path-Consistency-Aufgabe 9

Autorisierung. Sicherheit und Zugriffskontrolle & Erstellen einer Berechtigungskomponente

Datenschutzfreundliche Soziale Netzwerke: spontan und kurzlebig

MSXFORUM - Exchange Server 2003 > SMTP Konfiguration von Exchange 2003

DeltaVision Computer Software Programmierung Internet Beratung Schulung

Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse

Transkript:

Client-Server-Architekturen und Prozess-Kommunikation in verteilten Systemen Betriebssysteme, basierend auch auf Material aus Tanenbaum und Colouris Hermann Härtig TU Dresden

Wegweiser Verteilte Systeme Motivation Begriff Kriterien und Probleme Client-Server-Architekturen Prozesskommunikation Betriebssysteme WS 2014, ProzessKommVS 2

Ausgangspunkt 1: Netzwerke Netzwerk... Netzwerk Zustellen von Botschaften Betriebssysteme WS 2014, ProzessKommVS 3

Sockets Client Server Netz Client create sock(protocol type) connect(exampleaddress) Server create sock(protocol type) bind(exampleaddress) listen accept Betriebssysteme WS 2014, ProzessKommVS 4

Zugriff mittels Kopieren (read/write) Prozess mit Adressraum read Read_Call [Datei_Id, Position] Dateisystem Read_Reply [Result, Data] Systemcall oder Botschaften Kernkomponente oder eigener Serverprozess Betriebssysteme WS 2014, ProzessKommVS 5

Systemarchitekturen: Prozeduraufrufe oder Botschaften Botschaften Dateisystem Systemaufrufe Dateisystem Betriebssysteme WS 2014, ProzessKommVS 6

Verteilte Systeme Ansammlung autonomer Rechner, die dem Benutzer als ein System präsentiert werden. (Tanenbaum) Ansammlung autonomer Rechner, die über ein Netzwerk verbunden sind und mit verteilter Systemsoftware ausgestattet sind. (Colouris) You know you have one when the crash of computer you have never heard of stops you from getting any work done (Leslie Lamport) Betriebssysteme WS 2014, ProzessKommVS 7

Verteilte Systeme Begriff Ein verteiltes System liegt vor, wenn mehrere Rechner eine gemeinsame Aufgabe übernehmen. Vier Problembereiche voneinander unabhängige Ausfälle unzuverlässige Kommunikation unsichere (insecure) Kommunikation (Mithören, Manipulieren) teure Kommunikation (Bandbreite, Latenz, Kosten) (Michael D. Schroeder) Betriebssysteme WS 2014, ProzessKommVS 8

Verteilte Systeme Kriterien Gründe für den Einsatz verteilter Systeme inhärent verteilter Charakter der Anwendungen Rechenleistung (Wirtschaftlichkeit) gemeinsame Nutzung von Betriebsmitteln (resource sharing) Ausfallsicherheit Betriebssysteme WS 2014, ProzessKommVS 9

Verteilte Systeme Kriterien Beurteilungskriterien Transparenz: Orts-, Zugriffs-, Namens-Transparenz Replikations-, Migrations-Transparenz Skalierbarkeit Leistung Administrierbarkeit (Betriebsmittelnutzung) Zuverlässigkeit (Umgang mit Fehlern, Ausfällen) Sicherheit (gegen Angriffe) Offenheit Betriebssysteme WS 2014, ProzessKommVS 10

Offenheit durch Prozesskommunikation Funktionalität eines Systems wird nicht durch statischen Kern implementiert, sondern durch eine Menge von Benutzerprozessen z. B. Dateisystemaufrufe nicht durch Kernaufruf, sondern durch Botschaft an Prozess wenn Prozesskommunikation netzwerktransparent, dann fällt Zugriffstransparenz dabei ab (auch) daraus resultiert die große Bedeutung der IPC offene verteilte Systeme sind charakterisiert durch einen einheitlichen Prozesskommunikations- Mechanismus Veröffentlichung der wesentlichen Schnittstellen Heterogenität von Hardware und Software Betriebssysteme WS 2014, ProzessKommVS 11

Neue, durch Verteilung verursachte Probleme Neue Fehlertypen Botschaften können verloren gehen oder verfälscht werden Ausfall von Rechnern oder Netzwerk Neue Angriffsmöglichkeiten Botschaften werden unterdrückt, mitgehört, manipuliert, wiederholt Absenderangaben werden gefälscht Rechner werden mit Botschaften bombardiert Neues Betriebsmittel Netzwerke Netz als Flaschenhals; Bandbreite, Latenz, Kosten Adressierung: Finden des richtigen Rechners bzw. Ports Heterogenität Hardware Betriebssystem Betriebssysteme WS 2014, ProzessKommVS 12

Beispiel für neue Fehlersituation am Beispiel eines Benutzerprogrammes, das ein entferntes Dateisystem benutzt: lokal : Programm allein fällt aus oder Programm und Dateisystem verteilt: das entfernte Dateisystem fällt (allein) aus Denkbare Varianten Programm fällt auch aus Programmierer muss neue Fehlersituation berücksichtigen Besseres? Betriebssysteme WS 2014, ProzessKommVS 13

Eine grundsätzliche Überlegung (1) Gegeben folgendes Problem p, q Prozesse, fallen nicht aus, kommunizieren via send/receive Botschaften können verloren gehen keine Annahme über Laufzeit der Botschaften möglich a, b mögliche Operationen von p, q p, q sollen entweder: (i) dieselbe (nichtriviale) Operation einmal ausführen (ii) keine Op. ausführen Gibt es eine Botschaftenfolge, die das leistet? Betriebssysteme WS 2014, ProzessKommVS 14

Behauptung Eine grundsätzliche Überlegung (2) Es gibt kein solches Protokoll, das mit endlich vielen Botschaften auskommt! Beweis: Angenommen, es gebe solche Protokolle bestehend aus Folgen von Botschaften: ( m p q, m q p )*. Wähle: Protokoll mit geringster Zahl von Botschaften. o. B. d. A.: m p q sei letzte Botschaft dieses Protokolls, dann kann p eine solche Entscheidung nicht auf der Annahme aufbauen, dass m p q ankommt. dito für q. Also kann m p --> q auch wegfallen. Widerspruch, da offensichtlich nicht kleinstes Protokoll! Betriebssysteme WS 2014, ProzessKommVS 15

Wegweiser Verteilte Systeme Motivation Begriff Kriterien und Probleme Client-Server-Architekturen Prozesskommunikation Betriebssysteme WS 2014, ProzessKommVS 16

Konstruktionsprinzipien für verteilte Systeme Client-Server-Architekturen Dienste werden durch Serverprozesse erbracht Klienten nehmen diese durch IPC in Anspruch Kommunikation basierend auf Botschaften: Zustellung der Botschaften über Netzwerk (z.b. via Sockets) Kommunikation basierend auf ( Prozedur -) Aufrufen: Simulation durch Botschaften Verpackung der In-Parameter in Botschaft Versenden, Durchführen der Operation auf der anderen Seite Verpackung der Out-Parameter und Zurücksenden Betriebssysteme WS 2014, ProzessKommVS 17

Client-Server-Architekturen Strukturierung von (Betriebs-) Systemen als eine Menge kooperierender Prozesse (Server), die Dienste anbieten Benutzer-Prozesse (Clients) nehmen Dienste durch IPC in Anspruch Server Client Server Lokales BS Lokales BS mit oder ohne Netzwerk Mikrokern oder monolithisches System Betriebssysteme WS 2014, ProzessKommVS 18

Mikrokernbasierte Betriebssysteme Funktionalität grundsätzlich per Benutzerprozess (mit eigenem Adressraum) und mittels IPC Dateisysteme Netzwerkprotokolle Treiber... Vorteile Offenheit Fehlerisolierung Nachteil Effizienz Client Server Server Netzwerktreiber Netzwerktreiber Mikrokern Mikrokern Betriebssysteme WS 2014, ProzessKommVS 19

Einsatz vieler Threads Server müssen in der Lage sein, viele RPCs überlappend auszuführen alle Betriebsmittel eines Servers in einem Adressraum Grundidee: viele Threads pro Adressraum Threads werden gesteuert (z.b. durch Scheduler) z.b. blockierende E/A Port Betriebssysteme WS 2014, ProzessKommVS 20

Abarbeitung per Ereignissen (Events) Server müssen in der Lage sein, viele RPCs überlappend auszuführen alle Betriebsmittel eines Servers in einem Adressraum Grundidee: wenige Threads Events werden behandelt, sortiert, weitergegeben z.b. event-driven E/A Port Betriebssysteme WS 2014, ProzessKommVS 21

Hilfsthread im Kern Systemaufrufe Rumpf- Dateisystem Botschaften Dateisystem Betriebssysteme WS 2014, ProzessKommVS 22

Hilfsprozess Systemaufrufe Botschaften Rumpf- Dateisystem Dateisystem Betriebssysteme WS 2014, ProzessKommVS 23

Peer-To-Peer Systeme Ziel und Charakteristika: Nutzung / Kooperation zahlreicher Rechner im Internet keine ausgewiesene und (wohl-)administrierte Server zuverlässige, gemeinsame Nutzung ( sharing ) verteilter und potentiell unzuverlässiger Rechner Anwendungen: gemeinsame Nutzung von Dateien ( File-Sharing ) Web-Caches Problembereiche: sehr große Zahlen beteiligter Rechner Lastverteilung große Dynamik in der Verfügbarkeit der beteiligten Rechner Sicherheit ( Security ) Betriebssysteme WS 2014, ProzessKommVS 24

Wegweiser Verteilte Systeme Motivation Begriff Kriterien und Probleme Client-Server-Architekturen Prozesskommunikation Betriebssysteme WS 2014, ProzessKommVS 25

Wegweiser Fernaufruf (Remote Procedure Call RPC) Vorgehen Implementation Fehlerbehandlung Gruppenkommunikation Anhang: SUN RPC Betriebssysteme WS 2014, ProzessKommVS 26

Einige Begriffe und Abkürzungen IPC RPC lokal entfernt (remote) unicast broadcast multicast Inter Process Communication Remote Procedure Call auf einem Rechner über Rechnergrenze ein Partner an alle (z. B. an alle in einem Teilnetz) an einige (z. B. Mitglieder einer Gruppe) Betriebssysteme WS 2014, ProzessKommVS 27

Basismechanismen und Kommunikationsformen send (A, M) überträgt Daten an Adressaten receive (M) empfängt Daten Tanenbaum Datenströme Sender Empfänger (z. B. Pipes) send (M 1 ) receive (M 1 ) send (M 2 ) receive (M 2 )...... send (M n ) receive (M k ) Fernaufruf (RPC) Rechnernetze-Vorlesung Betriebssysteme WS 2014, ProzessKommVS 28

Adressierung in Client-Server Systemen Prinzipielle Alternativen: Maschine.Prozess (IP-Adresse.Port) Broadcast, z. B. große Zahlen als Adressen Nameserver Nameserver Client Server 1 3 4 1 Cl Srv Cl Srv Srv Cl NS 2 Kernel 4 1 2 3 2 Netz Tanenbaum 1: Request to 234.0 2: Reply to 199.0 1: Broadcast 2: Here I am 3: Request 4: Reply 1: Lookup 2: NS reply 3: Request 4: Reply Betriebssysteme WS 2014, ProzessKommVS 29

Ziel: Fernaufruf (Remote Procedure Call) Client-Server-Architekturen handhabbar machen Weg: Simulation des lokalen Prozeduraufrufes mittels Botschaften-System Client Server send (S, M); receive (M2); while (1) { wait (M); switch (M.op) { case proc1 :... } } send (Client, M2); break;... Betriebssysteme WS 2014, ProzessKommVS 30

RPC Implementierung (aus Coulouris et al.) Client Computer Server Computer Coulouris Dollim ore Kindberg Client Process Server Process local call marshal arguments local return unmarshal results send request receive reply receive request send reply unmarshal arguments select procedure marshal results execute procedure return Client Aufgaben: Client stub procedure Communication module Parameteraufbereitung (Marshalling) Binden (Auffinden des zuständigen Servers) Kommunikation Betriebssysteme WS 2014, ProzessKommVS 31 Dispatcher Server stub Service procedure

Ablauf RPC Client ruft Client-Stub-Prozedur auf Client steckt Parameter in Nachricht, verzweigt in Kern Coulouris Dollim ore Kindberg Kern sendet Nachricht an Server (send) Client-Stub: receive wird blockiert entfernter Kern gibt Nachricht an Server-Stub Server-Stub packt Parameter aus, ruft Prozedur auf Server-Stub packt Resultat in Nachricht, verzweigt in Kern Server-Stub: send; receive wird blockiert Client-Kern gibt Nachricht an Client-Stub Client-Stub packt Resultat aus, übergibt an Client Betriebssysteme WS 2014, ProzessKommVS 32

Unterschiede lokaler RPC Prozedur Parameter Call by Reference (unüblich, nicht unmöglich) statt dessen: copy in, copy out Semantik globale Variable anderer Adressraum bei RPC komplexe Datenstrukturen als Parameter Fehlerisolation Sicherheit Effizienz RPC-lokal: ca. 100 Takte auf ALPHA 21164 Prozedur: 0 Takte (bei offenem Einbau) Betriebssysteme WS 2014, ProzessKommVS 33

Fehlerbehandlungen Fehlersemantik Prozeduraufruf: exakt ein Aufruf ( exactly once ) Coulouris Dollim ore Kindberg verfälschte Botschaften erkennbar und korrigierbar durch redundante Codierung verlorene Request-Botschaft Timeout Wiederholung Request Verlorene Reply-Botschaft Timeout bei Request Wiederholung Request ja: at least once / Duplikation nein: at most once Betriebssysteme WS 2014, ProzessKommVS 34

May Be RPC-Fehlersemantik Nachricht genau einmal versenden, keine Kontrolle Tanenbaum At Least Once (SUN RPC) wiederholtes Senden der Request-Botschaft bis zu einem Reply nur für Anwendungen mit idempotenter Semantik At Most Once (Corba) Senden einer Fehlernachricht (Duplikat-Erkennung / Reply-Wiederholung) Birell/Nelson: wenn Server nicht ausfällt und ein Reply kommt, dann exactly once -Semantik, sonst unklar Betriebssysteme WS 2014, ProzessKommVS 35

Wegweiser Fernaufruf (Remote Procedure Call RPC) Vorgehen Implementation Fehlerbehandlung Gruppenkommunikation Anhang: SUN RPC Betriebssysteme WS 2014, ProzessKommVS 36

Gruppe: Gruppen-IPC (multicast) Menge von Prozessen, die auf eine vom System oder von Nutzern festgelegte Art zusammenarbeiten Multicast: 1 Botschaft eines Prozesses an alle Prozesse einer Gruppe Anwendungen: Fehlertoleranz auf Basis replizierter Server Auffinden von Objekten in verteilten Anwendungen höhere Leistungsfähigkeit auf der Basis replizierter Server Konsistenz von Kopien (multiple update) Bandbreitenreduzierung (1 mal übertragen statt n mal) Betriebssysteme WS 2014, ProzessKommVS 37

Adressierung von Gruppen Multicast Broadcast Unicast Tanenbaum 0 1 2 3 4 0 1 2 3 4 0 1 2 3 4 Netzwerknutzung: Atomarität: nur eine Botschaft über Netz alle oder kein Mitglied der Gruppe empfangen Botschaft Betriebssysteme WS 2014, ProzessKommVS 38

Botschaften-Reihenfolge (1) Tanenbaum P1 P2 P3 P4 P1, P4: Klienten P2, P3: replizierte Server Botschaften: Schreib-Operationen führen zu Konsistenz-Problem Betriebssysteme WS 2014, ProzessKommVS 39

Botschaften-Reihenfolge (2) Totally Ordered Multicast Tanenbaum Werden mehrere Botschaften an eine Gruppe gesendet, so werden sie von allen Mitgliedern der Gruppe in gleicher Reihenfolge empfangen Mögliche Implementierung: ein Prozess ( Sequencer ) ist für Zustellung zuständig Sequencer Betriebssysteme WS 2014, ProzessKommVS 40

Botschaften-Reihenfolge (3) Beispiel für nicht kausal geordnet: P1 P2 P3 M1 M2 M2 M1 P1, P2, P3: Teilnehmer an News-Group M1: Anfrage M2: Antwort auf Anfrage Kausal geordnete Zustellung ( Causally Ordered Multicast ) Aufrechterhaltung einer potentiellen kausalen Abhängigkeit zwischen Ereignissen Betriebssysteme WS 2014, ProzessKommVS 41

Zusammenfassung IPC - Grundlage für offene Systeme Client-Server-Architekturen Wichtige Werkzeuge Bibliotheken für Threads und RPC Fehlersemantik und Anwendung Betriebssysteme WS 2014, ProzessKommVS 42

Wegweiser Fernaufruf (Remote Procedure Call RPC) Vorgehen Implementation Fehlerbehandlung Gruppenkommunikation Anhang: SUN RPC Betriebssysteme WS 2014, ProzessKommVS 43

Werkzeuge für RPC Ziel: Botschaften-Systeme für Client-Server-Architekturen handhabbar machen durch Simulation des lokalen Prozeduraufrufes durch Botschaften-System Betriebssysteme WS 2014, ProzessKommVS 44

Interface Definition Language Fall-Beispiel SUN-RPC Programm-, Versions-Nummer und Prozedurnummern typedefs, constants, structs, programs rpcgen erzeugt client: stub server: main, dispatcher, stub marshalling und unmarshalling header file lokaler Binding-Service ( port mapper ) Betriebssysteme WS 2014, ProzessKommVS 45

File interface in Sun XDR (1) /* FileReadWrite service interface definition in file FileReadWrite.x */ Coulouris Dollim ore Kindberg const MAX = 1000; typedef int FileIdentifier; typedef int FilePointer; typedef int Length; Betriebssysteme WS 2014, ProzessKommVS 46

File interface in Sun XDR (2) struct Data { Length length; char buffer[max]; }; struct writeargs { FileIdentifier f; FilePointer position; Data data; }; program FILEREADWRITE { version VERSION { void WRITE(writeargs) =1; Data READ(readargs) =2; } = 2; //version number //=> write_2 //=> read_2 Coulouris Dollim ore Kindberg struct readargs { FileIdentifier f; FilePointer position; Length length; }; } = 9999; //program number Betriebssysteme WS 2014, ProzessKommVS 47

C program for client in Sun RPC (1) // File: C.c - Simple client of the // FileReadWrite service. Coulouris Dollim ore Kindberg #include <stdio.h> #include <rpc/rpc.h> #include <FileReadWrite.h> int main(int argc, char **argv) { CLIENT *clienthandle; char *servername = "coffee"; readargs a; Data *data; clienthandle = clnt_create(servername, FILEREADWRITE, VERSION, "udp"); //creates socket + a client handle Betriebssysteme WS 2014, ProzessKommVS 48

C program for client in Sun RPC (2) if (clienthandle == NULL) { clnt_pcreateerror(servername); // unable to contact server exit(1); } Coulouris Dollim ore Kindberg a.f = 10; a.position = 100; a.lenght = 1000; data = read_2(&a, clienthandle); // call to remote read procedure... clnt_destroy(clienthandle); //closes socket } return 0; Betriebssysteme WS 2014, ProzessKommVS 49

C program for server procedures in Sun RPC // File S.c - server procedures for the // FileReadWriteservice #include <stdio.h> #include <rpc/rpc.h> #include <FileReadWrite.h> void *write_2(writeargs *a) { Coulouris Dollim ore Kindberg } // do the writing to the file Data *read_2(readargs *a) { } static Data result; //must be static result.buffer =... //do the reading from the file result.length =... //amount read from the file return &result; Betriebssysteme WS 2014, ProzessKommVS 50