VS: Verteilte Systeme Kap. 02 Kommunikation Prinzipien und Realisierung mit Sockets. Wolfgang Wiedermann FH Regensburg FH. Teil 1
|
|
- Björn Goldschmidt
- vor 8 Jahren
- Abrufe
Transkript
1 VS: Verteilte Systeme Kap. 02 Kommunikation Prinzipien und Realisierung mit Sockets Wolfgang Wiedermann FH Regensburg FH Teil 1 1
2 Inhalt: Kommunikation Übersicht: Schichten Sockets Verbindungsfreie Sockets: UDP-Sockets Verbindungsorientierte Sockets: TCP-Sockets Marshalling, Unmarshalling Request/Reply-Protokolle RPC Remote Procedure Call Nachrichten-Orientierte Kommunikation MOM Stream-Orientierte Kommunikation Literatur Couloris/Dollimore/Kindberg (cdk) : VS Tanenbaum (tb): VS 2
3 Schichten der Middleware Anwendungen, Dienste RMI, RPC, CORBA, Web-Services Request-Reply Protokolle UDP und TCP Middleware 3
4 Sockets: Allgemein Das Socket-Interface wurde zur Programmierung verteilter Anwendungen auf TCP/IP-Netzwerken für UNIX-Rechner entwickelt. Die Socket-Abstraktion setzt zwei Prozesse voraus, die auch auf demselben Rechner laufen können. Ein Socket ist dabei als ein Endpunkt einer Kommunikation im Netzwerk zu verstehen. Um eine Verbindung zu ermöglichen, braucht man zwei solcher Enden ( port) Dabei gibt es zwei Typen von Verbindungen verbindungsfrei: Datagramme, einzelne Pakete von Nachrichten (UDP) verbindungsorientiert: sequenzielle Bearbeitung in Streams möglich (TCP) 4
5 Sockets und Ports socket any port agreed port socket client Internet address = message other ports server Internet address = Grafik: cdk 5
6 Kommunikation mit verbindungsfreien Sockets Mit verbindungsfreien Sockets können einzelne Datenpakete versandt werden. Transfer Der empfangende Prozess muss ein Byte-Array zur Verfügung stellen, in das die Nachricht passt. Ist die Nachricht zu lang, so wird sie gekürzt. Senden (send) blockiert nicht, empfangen (receive) blockiert, außer wenn man einen Time-Out angibt. Die Empfangsmethode receive nimmt jede Nachricht an, die an den Socket adressiert ist. Der Absender kann aus der Nachricht ausgelesen werden. Fehlermöglichkeiten Jedes Paket ist unabhängig von den anderen. Pakete können verloren gehen. Einzelne Pakete können andere Pakete überholen. 6
7 Trivialansatz Remote-Kommunikation Client Server (Daten in String schreiben) (warten) (Reply Message auswerten) Request message Reply message On Interrupt: String parsen Daten verarbeiten Daten in String schr. Request Parameter1 Parameter2 Parameter3 7
8 Trivialansatz Remote-Kommunikation Request Parameter1 Parameter2 Parameter3 Problem: So ist nur eine Funktion pro Port möglich! 8
9 Trivialansatz Remote-Kommunikation Request Parameter1 Parameter2 Parameter3 Problem: So ist nur eine Funktion pro Port möglich! Lösung: OperationsID zum Request hinzufügen 9
10 Trivialansatz leicht verbessert Client (Operation +Daten in String schreiben) (warten) (Reply Message auswerten) Request message Reply message Server On Interrupt: String parsen Operation ausw. Daten verarbeiten Daten in String schr. Request OperationID Parameter1 Parameter2 Reply RetParam1 RetParam2 RetParam3 10
11 Trivialansatz leicht verbessert Request OperationID Parameter1 Parameter2 Reply RetParam1 RetParam2 RetParam3 Problem: Keine Zuordnung zwischen Request und Reply! (Ist nur bei nicht verbindungsorientierten, also UDP-basierten Protokollen relevant) 11
12 Trivialansatz leicht verbessert Version 2 Client (Operation +Daten in String schreiben) (warten) (Reply Message auswerten) Request message Reply message Server On Interrupt: String parsen Operation ausw. Daten verarbeiten Daten in String schr. Request OperationID RequestID Parameter1 Reply RequestID RetParam1 RetParam2 12
13 Objektorientierung vs. Remote Function Call Prozedurales Remoting Aufruf von entfernten Funktionen oder Prozeduren Alle relevanten Daten werden als Parameter übergeben per Definition Stateless Objektorientiertes Remoting Aufruf von entfernten Methoden Diese gehören per Definition zu Objekten deshalb Stateful Problem: Identifikation von entfernten Objekten 13
14 Request-Reply-Protokolle und Objektreferenzen Client Server dooperation (warten) (continuation) Request message Reply message getrequest Auswahl des Objekts Ausführung der Methode sendreply Objektreferenz 32 bits 32 bits 32 bits 32 bits Internet Adresse Port Zeit Objektkennung Schnittstelle Grafik: cdk 14
15 Operationen in einem Request-Reply-Protokoll Senden einer Anforderung an ein entferntes Objekt. Parameter: Objektreferenz, Methodenreferenz, Argumente public byte[] dooperation ( RemoteObjectRef o, int methodid, byte[] arguments) Auslesen einer Anforderung vom Server-Port public byte[] getrequest (); Senden einer Antwort an den Client. public void sendreply ( byte[] reply, InetAddress clienthost, int clientport); 15
16 Aufbau einer Request-Reply-Nachricht messagetype requestid objectreference methodid arguments int (0=Request,1= Reply) int RemoteObjectRef int or Method array of bytes Grafik: cdk 16
17 Marshalling, Unmarshalling Bei verteilten Systemen müssen Daten von einem Rechner zu anderen Rechner übertragen werden. Dazu müssen sie in eine für die Übertragung geeignete Form umgewandelt bzw. aus dieser Form wieder in eine für den Zielrechner brauchbare Form zurückgewandelt werden. Marshalling: Wandelt eine Kollektion von Datenelementen in eine für die Übertragung geeignete Form um (serialisieren). Unmarshalling: Zerlegt empfangene Daten und erzeugt daraus beim Empfänger eine identische Kollektion von Datenelementen (deserialisieren). 17
18 Marshalling Private Datenformate Für kleine Anwendungen kann man private Datenformate für die Abspeicherung erfinden. Z.B. kann man alle Daten als Text abspeichern, wobei die Felder durch Sonderzeichen getrennt werden. Dieses Verfahren stößt schnell an seine Grenzen. Serialisierung In diversen Frameworks gibt es für manche Klassen die Möglichkeit, Objekte zu serialisieren. Die Objekte werden auf Streams geschrieben. Diese Streams passen nahtlos zur verbindungsorientierten Kommunikation mit Sockets und über ByteStreams auch zu Datagrammen. 18
19 Marshalling : Datenformate XDR (Internet RPC External Data Representation) NDR (Network Data Representation vom MS -RPC) CDR (Common Data Representation CORBA) Java object serialization ASN.1 (ISO OSI) : Grafik: cdk 19
20 Marshalling über XML Manche Frameworks bieten die Möglichkeit, die Daten in jeweils eigenen XML-Formaten zu serialisieren. Java und.net bieten hier eingebaute Möglichkeiten Objekt XML Bleibt man in einem Framework, gibt es kein Problem beim Marshalling/Unmarshalling Der Austausch mit anderen Systemen ist häufig zum Scheitern verurteilt. XSD Klasse, Objekte dieser Klasse dann in XML serialisieren. XML-Format via XSD normiert, d.h. gute Aussichten, Daten über Framework-Grenzen hinweg auszutauschen. ABER: Die Klassen in Java/C# werden generiert und dürfen danach nicht mehr verändert werden. Siehe: vs-xml-persistenz.pdf 20
21 Probleme mit der Kommunikation über Sockets Marshalling/Unmarshalling aufwendig Asynchrone Kommunikation fehleranfällig Die asynchrone Kommunikation passt nicht in das normale Programmiererleben Abhilfe: RPC Remote Procedure Call Die Middleware übernimmt Marshalling/Unmarshalling, Transport, Zustellung, Aktivierung des Servers und Antworten. Beispiel: ein Aufruf k = add (i, j) als RPC 21
22 Client 1 2 Server Aufruf: k = add (i, j); Kennzeichen für Methode, Werte der Parameter (27 bzw. 2) auf Verbindung schreiben 3 Server horcht an Socket #add B Ergebnis als Rückgabewert setzen 9 Auspacken der Parameter 4 X0 im RAM X1 im RAM X2 im RAM D??.??.??.?? B X0 = add (X1, X2) D 7 6 Programmcode der add (int, int)- Methode
23 RPC: Schritt 1 und 2 Zu 1: Der Client kann die Methode add nicht direkt aufrufen, da sie in einem anderen Prozess implementiert ist. Stattdessen wird eine add-methode eines Stellvertreters aufgerufen. Zu 2: Diese add-methode öffnet einen Kommunikationskanal zu einem Server (z.b. über einen Socket, schreibt einen Auftragscode für das gewünschte Objekt, die Verarbeitung sowie die Parameter auf den Socket. Die Darstellung der Daten muss unabhängig von der Plattform sein. Z.B. kann der Empfänger ein Big-Endian-Computer (Z.B. Sparc: höchstwertiges Byte zuerst) sein, der Sender ein Little-Endian- Computer (Z.B. Intel, niederwertiges Byte zuerst). Danach blockiert diese Methode im Stellvertreter. 23
24 RPC: Schritt 3 und 4 Zu 3 Der Kommunikationskanal übernimmt den Transport zum Server. Der Server muss zu diesem Zeitpunkt gestartet sein und z. B. an einem Socket horchen: listen-operation. Eine eingehende Verbindung wird akzeptiert. Der Server kann die Aufträge sequentiell bearbeiten oder auch parallel. In letzterem Fall bietet sich die Zuordnung der Arbeiten zu einzelnen Threads an, die je nach Bedarf vorher gestartet wurden (sog. Thread- Pool), bzw. in Abhängigkeit von einem Auftrag gestartet werden. Zu 4: In jedem Fall müssen die Parameter ausgepackt werden. Sie werden aus der netzwerkunabhängigen Darstellung in die binäre Darstellung der Server-Plattform konvertiert und dort im RAM abgelegt. Auch der Platz für ein eventuelles Ergebnis wird bereitgestellt. 24
25 RPC: Schritte 5 9 Zu 5 Die gewünschte Routine wird zum Ablauf gebracht. Das Ergebnis liegt nun im RAM (Server) vor. Zu 6: Das Ergebnis wird in den Kommunikationskanal geschrieben. Zu 7: Das Ergebnis wird an den Auftraggeber zurückgeliefert. Zu 8: Die Daten werden aus dem Socket ausgelesen und im RAM-Bereich des lokalen Stellvertreters abgelegt. Zu 9: Der Wert wird als Ergebnis des Aufrufs zurückgeliefert. 25
26 Implementierung von RPC-Servern Sequentieller Server Wenn ein Server bei der Ausführung eines Auftrags in einen Wartezustand gerät, kann er nicht auf andere Aufträge reagieren. Problem Lange Wartezeiten für die Auftraggeber, auch dann, wenn der Server nicht ausgelastet ist. Paralleler Server Der Server ist in der Lage, mehrere Aufträge parallel auszuführen, z.b. über Threads. Problem Wer übernimmt die Synchronisierung auf der Server-Seite? Microsoft-Bezeichnungen Single-Threaded-Apartment STA und Multi-Threaded-Apartment MTA 26
27 Problem beim RPC Die Schnittstelle zwischen Client und Server ist so komplex, dass sie maschinell unterstützt werden muss. So muss der Code für das Ver- und Entpacken der Parameter generiert werden. Im Grunde muss ein Vertrag zwischen Client und Server aufgesetzt werden. Aus dem Vertrag heraus müssen die entsprechenden Teile für Client- und Server generiert werden: [ uuid(7a98c cf-b73b-00aa00b677a7), version(1.0) ] interface hello{ void HelloProc([in, string] unsigned char * pszstring); void Shutdown(void); 27
28 Entwicklung für RPC Der Vertrag wird in IDL aufgesetzt. Client- und Server-Anteile werden generiert. Die Anwender können ihre Software entwickeln. Die Software läuft dann mit dem Laufzeitsystem der Middleware. Also: Die Middleware greift auch in den Entwicklungsprozess für die Software ein. Clientseite Client: Stellvertreter, Stub Entwickler:IDL Schnittstelle Serverseite Server: Skeleton Client: Anwendung Server: Funktionalität 28
29 Entfernter Objektaufruf Grafik: ts 29
30 Sockets und RPC: Zusammenfassung Client-/Server-Modelle Der Server muss laufen, wenn der Client eine Anfrage absetzt. Was ist mit Geräten, die nicht permanent eingeschaltet oder verbunden sind? Dies gilt für Clients (Auftrag absetzen und beenden) ebenso wie für Server (läuft nicht ständig) Abhilfe: eine Message-Oriented-Middleware MOM mit der Fähigkeit zur Pufferung der Aufträge, sei es auf der Seite des Clients oder der des Servers. Sockets können auch für eine asynchrone Kommunikation benutzt werden, der klassische RPC nicht. CORBA bietet für Objekte eine asynchrone Kommunikation mit seinen oneway-methoden an (fire and forget). 30
31 Nachrichtenorientierte Kommunikation Grafik: ts 31
32 Nachrichtenorientierte Kommunikation Beispiele SMS JMS Java Messaging Service in JEE Prinzip Die Middleware nimmt die Aufträge entgegen und sorgt für die Zustellung. Wenn sich ein Client beenden will: Die Aufträge liegen auf einem Kommunikationsserver und können zugestellt werden. Hier ist nur eine asynchrone Arbeitsweise sinnvoll. Wenn ein Server nicht läuft: Auch hier liegen die Aufträge auf einem Kommunikationsserver und können zugestellt werden, sobald sich der Server als aktiv meldet. Die Steuerung kann die Kontrolle über die Server übernehmen und z.b. Transaktions-Dienste implementieren. 32
33 Streamorientierte Kommunikation: Übersicht Grafik: ts 33
34 Streamorientierte Kommunikation Problem: Wenig Steuer-Fluss, dafür ein hohes Datenaufkommen, meist in eine Richtung. Bei den Daten werden QoS (Quality of Service)-Anforderungen gestellt. Filme dürfen nicht ruckeln, 30 Frames/sec. Audio muss kontinuierlich übertragen werden: PCM 1/44100 sec. Intervalle bei Playback. Die streamorientierte Kommunikation lässt sich nicht mit den bisher besprochenen Middleware-Techniken implementieren, bei denen Zeit keine Rolle spielt. 34
35 Streamorientierte Übertragungsarten Asynchrone Übertragung Beispiel: File-Transfer Die Daten werden ohne Zeitbedingungen sequentiell übertragen. Synchrone Übertragung Eine maximale End-To-End-Verzögerung ist definiert, die Daten dürfen aber auch schneller übertragen werden. Isochrone Übertragung Es gibt eine minimale und maximale End-to-End-Verzögerung, sog. Beschränkter Jitter. Dies ist eine wichtige Übertragungsart für Mulitmedia. Einfache Streams: nur eine Quelle für Daten, z.b. Sprache. Zusammengesetzte Streams: mehrere Quelle für Daten, z.b. lippensynchrone Übertragung von Ton und Bild. 35
36 VS: Verteilte Systeme Prof. Dr. Fritz Jobst FH Regensburg FB Informatik/Mathematik Sockets in Java Architektur von Socket-Lösungen 36
37 Inhalt Sockets und Ports Verbindungsorientierte Sockets Verbindungsfreie Sockets System-unabhängige Datendarstellung in Java Die Klassen DataInputStream und DataOutputStream Abbildung auf Streams ( TCP) Beispiel: Additions-Server für TCP Architektur Kurzbeschreibungen für die Klassen Socket, ServerSocket InetSocketAddress, URL 37
38 Sockets: Allgemein Das Socket-Interface wurde zur Programmierung verteilter Anwendungen auf TCP/IP-Netzwerken für UNIX-Rechner entwickelt. Die Socket-Abstraktion setzt zwei Prozesse voraus, die auch auf demselben Rechner laufen können. Ein Socket ist dabei als ein Endpunkt einer Kommunikation im Netzwerk zu verstehen. Um eine Verbindung zu ermöglichen, braucht man zwei solcher Enden ( port) Dabei gibt es zwei Typen von Verbindungen verbindungsfrei: Datagramme, einzelne Pakete von Nachrichten (UDP) verbindungsorientiert: sequenzielle Bearbeitung in Streams möglich (TCP) 38
39 Sockets und Ports socket any port agreed port socket client Internet address = message other ports server Internet address = Grafik: cdk 39
40 Kommunikation mit verbindungsfreien Sockets Mit verbindungsfreien Sockets können einzelne Datenpakete versandt werden. Transfer Der empfangende Prozess muss ein Byte-Array zur Verfügung stellen, in das die Nachricht passt. Ist die Nachricht zu lang, so wird sie gekürzt. Senden (send) blockiert nicht, empfangen (receive) blockiert, außer wenn man einen Time-Out angibt. Die Empfangsmethode receive nimmt jede Nachricht an, die an den Socket adressiert ist. Der Absender kann aus der Nachricht ausgelesen werden. Fehlermöglichkeiten Jedes Paket ist unabhängig von den anderen. Pakete können verloren gehen. Einzelne Pakete können andere Pakete überholen. 40
41 Verbindungsfreie Sockets in Java: Übersicht Server1 DatagramSocket Client1 Client2 DatagramSocket DatagramPacket DatagramSocket DatagramPacket DatagramPacket Server2 DatagramSocket Jedes DatagramPacket kann an einen anderen Server geschickt werden! DatagramPacket 41
42 Aufbau eines Clients (UDP) nach cdk import java.io.*; import java.net.*; public class UDPClient { public static void main(string args[]) { // args give message contents and server hostname DatagramSocket asocket = null; try { asocket = new DatagramSocket(); byte[] m = args[0].getbytes(); InetAddress ahost = InetAddress.getByName(args[1]); int port = 6789; DatagramPacket request=new DatagramPacket(m, m.length, ahost, port); asocket.send(request); byte[] buffer = new byte[1000]; DatagramPacket reply = new DatagramPacket(buffer, buffer.length); asocket.receive(reply); System.out.println("Reply: " + new String(reply.getData())); catch (SocketException e) { System.out.println("Socket: " + e.getmessage()); catch (IOException e) { System.out.println("IO: " + e.getmessage()); finally { if (asocket!= null) asocket.close(); 42
43 Aufbau eines Servers (UDP) nach cdk import java.io.ioexception; import java.net.*; public class UDPServer { public static void main(string args[]) { DatagramSocket asocket = null; try { asocket = new DatagramSocket(6789); byte[] buffer = new byte[1000]; while (true) { DatagramPacket request = new DatagramPacket(buffer, buffer.length); asocket.receive(request); DatagramPacket reply = new DatagramPacket(request.getData(), request.getlength(), request.getaddress(), request.getport()); asocket.send(reply); catch (SocketException e) { System.out.println("Socket: " + e.getmessage()); catch (IOException e) { System.out.println("IO: " + e.getmessage()); finally { if (asocket!= null) asocket.close(); 43
44 Verbindungsfreie Sockets und Daten in Java Problem: Datagramme senden bzw. empfangen nur Byte- Puffer: byte[]. Die Daten sollten mit den Klassen DataInputStream bzw. DataOutputStream gelesen bzw. geschrieben werden. Zum Senden können die Daten in einen DataOutputStream für einen ByteArrayOutputStream geschrieben werden. Dieser Stream wird dann als Byte-Array ausgelesen und geschrieben. Analog: Man empfängt einen Byte-Array. Dieser wird als ByteArrayInputStream an einen DataInputStream übergeben und von da mit DataInputStream ausgelesen. Strings: readutf bzw. writeutf benutzen. 44
45 UNIX-BSD-Sockets: Abläufe Server socket() bind() Client listen() socket() accept() connect() recv() send() send() recv() 45
46 Verbindungsorientierte Sockets 1 Bei der Verbindung zweier Prozesse sind die Rollen von Client und Server festgelegt. Jeder Socket hat einen Ausgabe- und einen Eingabestream. Senden erfolgt durch Schreiben in den Stream, Empfangen durch Lesen aus dem Stream. Der Schreiber kann blockiert werden, wenn er für den Leser zu schnell ist. Schließen eines Sockets: Daten werden an den Empfänger gesendet. Kennzeichen über das Schließen der Verbindung wird gesendet. Beim Ende eines Prozesses werden alle seine Sockets geschlossen. 46
47 Verbindungsorientierte Sockets 2 Fehlerbehandlung Prozesse können nicht zwischen Netzwerkfehlern und Fehlern in den Partner-Prozessen unterscheiden. Die kommunizierenden Prozesse erkennen nicht, ob ihre letzten Nachrichten empfangen wurden oder nicht. Sockets und Prozesse, Threads Das Empfangen per receive blockiert einen Prozess. Damit würde ein Server-Prozess blockiert und könnte keine weiteren Anfragen bearbeiten: sog. Sequentieller Server. Delegiert man die Bearbeitung einzelner eingehender Verbindungen an Threads, dann kann man weitere Anfragen auch während des Wartens bearbeiten: paralleler Server. 47
48 Verbindungsorientierte Sockets in Java: Übersicht Server ServerSocket: accept Client Socket Socket InputStream OutputStream OutputStream InputStream 48
49 Verbindungsorientierte Sockets in Java In Java ist der Zugriff auf verbindungsorientierte Sockets mit den Klassen Socket und ServerSocket gekapselt. Der Programmierer ist von den Niederungen spezieller Implementierungen auf den verschiedenen Architekturen völlig entlastet. Die Anlage einer Instanz der Klasse ServerSocket beinhaltet alle Funktionen zum Anlegen eines Server-Sockets. accept liefert dann einen Socket für eine am Server eingehende Verbindung, die ein Client durch Anlage eines Sockets eröffnet hat. Die Verbindung liefert Streams zum Schreiben bzw. zum Lesen. Daten sollten mit DataInputStream gelesen bzw. mit DataOutputStream geschrieben werden. 49
50 Aufbau einer Client-Anwendung (TCP) try { Socket client = new Socket (Host, PortNummer); InputStream in = client.getinputstream (); OutputStream out = client.getoutputstream (); // Lesen von in: ggfs Reader benutzen // Schreiben nach out. ggfs. PrintWriter benutzen... // Schließen der Streams und der Verbindung catch (IOException ioe) { // Fehlerbehandlung 50
51 Aufbau eines sequenziellen Servers (TCP) try { ServerSocket server = new ServerSocket (PortNummer); while (true) { Socket verbindung = server.accept (); InputStream in = verbindung.getinputstream (); OutputStream out = verbindung.getoutputstream (); // Lesen von in und Schreiben nach out... // Schließen der Streams und der Verbindung // Herunterfahren des Servers? -> Schleife verlassen catch (Exception e) { // Fehlerbehandlung für // IOException, SecurityException, // SocketTimeoutException, IllegalBlockingModeException // Schließen des Servers 51
52 Aufbau einer parallelen Servers (TCP) Eine parallele Server-Anwendung unterscheidet sich von einer sequenziellen Anwendung dadurch, dass bei jeder mit accept() angenommenen Verbindung ein Thread zu deren Bearbeitung gestartet wird. Der Server bearbeitet die Verbindung nicht mehr weiter, sondern horcht wieder am Socket, ob weitere Verbindungen eingehen. Der Serverbetrieb muss dann wie beim sequenziellen Server am Server durch Abbruch des Java-Programms oder von Clients durch spezielle Kommandos beendet werden. Parallele Server sind in Java mit einem gegenüber sequenziellen Servern kaum erhöhten Aufwand zu realisieren. Die Software-Struktur gewinnt durch die Trennung zwischen dem Aufbau der Verbindung und der Bearbeitung der Verbindung an Transparenz. 52
53 Parallele Server in Java Teil 1 class ServerThread extends Thread { Socket verbindung = null; ServerThread (Socket verbindung) { this.verbindung = verbindung; void run () { try { InputStream in = verbindung.getinputstream (); OutputStream out = verbindung.getoutputstream (); // Lesen von in und Schreiben nach out..... // Schließen der Streams und der Verbindung catch (IOException ioe) { // Fehlerbehandlung 53
54 Parallele Server in Java Teil 2 // Server-Klasse class Server { //... irgendeine Methode fuer die Arbeit im Server ServerSocket server = new ServerSocket (PortNummer); Socket verbindung = null; while (true) { try { verbindung = server.accept (); catch (Exception e) { // IOException, SecurityException, // SocketTimeoutException, IllegalBlockingModeException ServerThread serverthread = new ServerThread (verbindung); serverthread.start (); // Herunterfahren des Servers? -> Schleife verlassen // Schließen des Servers 54
55 System-unabhängige Datendarstellung in Java Hierzu dienen in Java die Klassen DataInputStream und DataOutputStream. Diese Klassen enthalten Methoden zum Lesen und Schreiben von Daten der elementaren Datentypen boolean, byte, char, short, int, long, float, double readboolean, readbyte, readchar, readshort, readint, readlong, readfloat, readdouble writeboolean, writebyte, writechar, writeshort, writeint, writelong, writefloat, writedouble Strings können in einem modifizierten UTF-8-Format gelesen bzw. geschrieben werden. readutf writeutf Zur Serialisierung von Objekten kann man auch die Methoden writeobject von ObjectOutputStream bzw. readobject von ObjectInputStream benutzen. 55
56 Die Socket-Pipeline writeint Internet readint Sender Dataoutput -Stream Socket Datainput -Stream Empfänger 56
57 Anbindung der Data - Streams an TCP Grundsätzliche Konstruktion in Java InputStream is = Irgendein InputStream OutputStream os = Irgendein OutputStream DataInputStream dis = new DataInputStream(is); DataOutputStream dis = new DataOutputStream(os); Der Input- bzw. OutputStream kann bei verbindungsorientierten Sockets aus dem Socket ausgelesen werden: Client (TCP) InputStream in = client.getinputstream (); OutputStream out = client.getoutputstream (); Server (TCP) Socket verbindung = server.accept (); InputStream in = verbindung.getinputstream (); OutputStream out = verbindung.getoutputstream (); 57
58 Anbindung der Data - Streams an UDP Problem: Datagramme (UDP) senden bzw. empfangen nur Byte-Puffer. Diese Byte-Puffer müssen an Streams angebunden werden. Schreiber-Lösung in Java mit ByteArrayOutputStream ByteArrayOutputStream bos = new ByteArrayOutputStream(); DataOutputStream dos = new DataOutputStream(bos); dos.writeint(i); dos.writeint(j); // Die Daten in ein Byte-Array auslesen byte[] buf = bos.tobytearray(); Damit kann das DatagramPacket geschnürt werden Leser-Lösung in Java mit ByteArrayInputStream // Daten als Byte-Array aus dem Paket holen byte[] data = packet.getdata(); ByteArrayInputStream bis = new ByteArrayInputStream(data); DataInputStream dis = new DataInputStream(bis); int x3 = dis.readint(); 58
59 Beispiel: Additions-Service Ein Server bietet die Addition ganzer Zahlen als Dienst an. Die Schnittstelle ICalc beschreibt die Aufgabe, CalcImpl implementiert den Dienst. public interface ICalc { int add(int i, int j); public class CalcImpl implements ICalc { public int add(int i, int j) { return i + j; Aufgabe: Implementierung einer Anbindung für Clients, um Aufträge an den Server abzusetzen. Die Ergebnisse sollen entgegengenommen und an den Client zurückgegeben werden. Implementierung einer Anbindung für den Server, um Aufträge entgegenzunehmen, die Parameter zu auszupacken, den eigentlichen Server (s. o.) aufzurufen, die Ergebnisse zu verpacken und zurückzusenden. 59
60 Architektur der Lösung Die Lösung erfolgt für Sockets mit TCP bzw. UDP Proxy lokaler Stellvertreter. Parameter auf den Kommunikationskanal schreiben. Server aufrufen. Ergebnisse lesen und an den Auftraggeber zurückliefern. Server Der Server wartet am Socket auf Aufträge. Für jeden Auftrag wird ein ServerThread gestartet. ServerThread Eingehende Daten übernehmen. Über den Adapter die Implementierung aufrufen. Der Adapter passt die Implementierung an Streams an. Ergebnisse zurück an den Auftraggeber ( Proxy) senden. 60
61 Grobstruktur der Lösung 1 Client 8 Server Proxy 2: Stream bzw. Paket 7: Stream bzw. Paket ServerThread 3 6 Pakete bzw. Streams enthalten binäre Daten. Zugriff mit DataInputStream bzw. DataOutputStream. CalcAdapter passt die Implementierung einer Schnittstelle an solche Datenströme an. CalcAdapter 4 5 CalcImpl 61
62 Benutzte Patterns Stellvertreter oder Proxy Hier wird speziell ein Remote-Proxy benutzt. Der lokale Stellvertreter nimmt Anfragen entgegen und leitet sie zur Bearbeitung weiter. Adapter Eine Klasse passt eine Schnittstelle x an eine andere Schnittstelle y an. Beide Patterns stammen aus dem Buch der GoF (Gang of Four) Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides: Entwurfsmuster. Elemente wiederverwendbarer objektorientierter Software. Addison Wesley, Bonn 1996 ISBN
63 Beispiel: Client Ein Client kann den Dienst anfordern Ein lokaler Stellvertreter (Proxy) implementiert den Dienst. import middleware.*; public class Client { public static void main (String[] args) { ICalc proxy = new Proxy(args[0]); int i = Integer.parseInt(args[1]); int j = Integer.parseInt(args[2]); int k = proxy.add(i, j); System.out.println(k); 63
64 Sockets: TCP oder UDP? Der lokale Stellvertreter (Proxy) nimmt den Auftrag entgegen. Er kommuniziert mit dem Server entweder über TCP oder über UDP. In jedem Fall müssen die Daten in einer plattformunabhängigen Darstellung übergeben werden. Dies besorgen die Klassen DataInputStream bzw. DataOutPutStream aus dem Package java.io. Dieser Teil der Arbeit ist im Server für TCP und UDP identisch und wird von der Klasse CalcAdapter geleistet. CalcAdapter passt die Schnittstelle ICalc an die DataInputbzw. DataOutputStreams an. 64
65 CalcAdapter package middleware; import java.io.*; public class CalcAdapter { public void handlerequest (DataInputStream dis, DataOutputStream dos) { // I/O Streams vom Socket try { Class c = Class.forName("CalcImpl"); middleware.icalc server = (middleware.icalc) c.newinstance(); int x1 = dis.readint(); int x2 = dis.readint(); int x3 = server.add(x1, x2); System.out.println("x1 = " + x1 + " x2 = " + x2); dos.writeint(x3); catch (Exception e) { System.out.println(" " + e); 65
66 TCP: Proxy (1/2) package middleware; import java.io.*; import java.net.*; public class Proxy implements ICalc { private Socket client = null; private DataOutputStream dos = null; private DataInputStream in = null; private String host = null; public Proxy(String host) { this.host = host; void closeall() {... 66
67 TCP: Proxy (2/2) public int add(int i, int j) { try { client = new Socket (host, port); // Verbinde die Streams dos = new DataOutputStream (client.getoutputstream()); dos.writeint(i); dos.writeint(j); // Auslesen der Antwort des Servers in = new DataInputStream (client.getinputstream()); int result = in.readint(); closeall(); return result; catch (IOException e) { return 0; 67
68 TCP: Server (1/2) package middleware; import java.net.*; public class Server { public static void main(string args[]) { ServerSocket s = null; // Socket zum Horchen Socket con = null; // Eingehende Verbindung // Server-Socket an port 8011 oeffnen try { s = new ServerSocket(8011); String n = s.getinetaddress().tostring(); catch (Exception e) { System.out.println("Exception:\n" + e); System.exit(1); // Herunterfahren des Servers 68
69 TCP: Server (2/2) while (true) { // Warte auf eingehende Verbindung try { con = s.accept(); System.out.println("accept : " + con); Thread thread = new middleware.serverthread(con); thread.start(); catch (Exception e) { System.out.println("Fehler : " + e); System.exit(1); // Abbruch des Server-Betriebs 69
70 TCP: ServerThread (1/2) package middleware; import java.io.*; import java.net.*; public class ServerThread extends Thread { private Socket con = null; // Connection private DataInputStream in = null; private DataOutputStream out = null; void closeall() {... 70
71 TCP: ServerThread (2/2) public void run() { // I/O streams vom Socket try { in = new DataInputStream(con.getInputStream()); out = new DataOutputStream(con.getOutputStream()); CalcAdapter ca = new CalcAdapter(); ca.handlerequest(in, out); catch (Exception e) { System.out.println(" " + e); closeall(); public ServerThread(Socket con) { this.con = con; 71
72 Kurzinfo zu der Klasse Socket Socket(String host, int port) throws IOException, UnknownHostException; Socket(InetAddress address, int port) throws IOException; void close() throws IOException; InputStream getinputstream() throws IOException; InetAddress getlocaladdress(); OutputStream getoutputstream() throws IOException; boolean isclosed(); Erzeugt einen Stream-Socket und verbindet ihn zum angegebenen Port auf dem angegebenen Host. Erzeugt einen Stream-Socket und verbindet ihn zum angegebenen Port auf der angegeben Adresse. Schließt den Socket. Gibt einen InputStream für diesen Socket zurück. Dieser kann wie in Kap. 5 beschrieben bearbeitet werden. Liefert die lokale Adresse, an die der Socket gebunden ist. Gibt einen OutputStream für diesen Socket zurück. Dieser kann wie in Kap. 5 beschrieben bearbeitet werden. genau dann wahr, falls Socket geschlossen. boolean isconnected(); genau dann wahr, falls Socket verbunden. 72
73 Kurzinfo zu der Klasse ServerSocket ServerSocket() throws IOException; ServerSocket(int port) throws IOException; Socket accept(); void close(); Erzeugt einen ungebundenen Server-Socket. Erzeugt einen Server-Socket an dem angegebenen Port. Wenn 0 angegeben ist, wird ein beliebiger freier Port gewählt. Auch eine SecurityException ist möglich. Horcht auf eine an diesem Socket eingehende Verbindung und akzeptiert sie. Schließt diesen Socket. InetAddress getinetaddress(); Gibt die lokale Adresse des Server-Sockets zurück boolean isbound(); Liefert den Bindungs-Status des Server-Sockets. boolean isclosed(); genau dann wahr, falls Socket geschlossen. 73
74 Kurzinfo zu der Klasse InetSocketAddress InetSocketAddress (InetAddress addr, int port); Erzeugt eine Socket-Adresse aus ei-ner IP-Adresse und einer Port-Nummer. InetSocketAddress (String hostname, int port) Erzeugt eine Socket-Adresse aus einem Hostnamen und einer Port-Nummer. InetAddress getaddress(); Liefert die Internet-Adresse. String gethostname(); Liefert den Hostnamen. int getport(); Liefert die Port-Nummer. 74
75 Kurzinfo zu der Klasse URL URL(String protocol, String host, int port, String file) throws MalformedURLException; URL(String spec) throws MalformedURLException; String getquery(); String getpath(); int getport(); String getprotocol(); String gethost(); String getfile();. InputStream openstream() throws IOException; Erzeugt eine URL aus dem Protokoll, Host, Port und Datei. Erzeugt eine URL aus einer URL-spezifikation in Textform. Liefert den Abfrageanteil einer URL (d.h. die Zeichenfolge nach dem Fragegezeichen? ). Liefert den Pfad einer URL. Liefert den Port einer URL. Liefert das Protokoll einer URL. Liefert den Host einer URL. Das Format entspricht RFC 2732, d.h. für eine IPv6-Adresse wird die Adresse in Klammern ('[' und ']') geliefert. Liefert den Dateinamen dieser URL Liefert einen Eingabestrom, um von der URL zu lesen. 75
Transmission Control Protocol (TCP)
Transmission Control Protocol (TCP) Verbindungsorientiertes Protokoll, zuverlässig, paketvermittelt stream-orientiert bidirektional gehört zur Transportschicht, OSI-Layer 4 spezifiziert in RFC 793 Mobile
MehrProgrammieren I. Kapitel 15. Ein und Ausgabe
Programmieren I Kapitel 15. Ein und Ausgabe Kapitel 15: Ein und Ausgabe Ziel: einen kleinen Einblick in die vielfältigen IO Klassen geben Grober Überblick Klasse File zur Verwaltung von Dateien Random
MehrProgrammieren II. Timer. Vorlesung 11. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Sommersemester 2011. Timer. Sockets.
Programmieren II Martin Schultheiß Hochschule Darmstadt Sommersemester 2011 1 / 26 Timer Sockets SMTP-Client 2 / 26 Timer Mit einem Timer können bestimmte Aktionen periodisch wiederkehrend durchgeführt
MehrÜbungen zu Softwaretechnik
Prof. Dr. Dr. h.c. M. Broy Lösungsblatt 11 Dr. H. Ehler, S. Wagner 23. Januar 2004 Übungen zu Softwaretechnik Aufgabe 16 Qualitätseigenschaften Broker-Pattern Beurteilen Sie das in Aufgabe 15 benutzte
MehrFOPT 5: Eigenständige Client-Server-Anwendungen (Programmierung verteilter Anwendungen in Java 1)
1 FOPT 5: Eigenständige Client-Server-Anwendungen (Programmierung verteilter Anwendungen in Java 1) In dieser Kurseinheit geht es um verteilte Anwendungen, bei denen wir sowohl ein Client- als auch ein
MehrVS Praktikum 03 Konzept
Darstellung der Architektur: Manager VS Praktikum 03 Konzept Account 3 3 7 6 NameServiceServer 4 5 2 1 2 1 Geldautomat Filiale Messagearten: Für jede unterschiedliche Message gibt es eine eigene Klasse:
MehrProgrammiermethodik. Übung 13
Programmiermethodik Übung 13 Sommersemester 2010 Fachgebiet Software Engineering andreas.scharf@cs.uni-kassel.de Agenda Vorstellung Musterlösung HA9 Mancala Showroom Client/Server Kommunikation in Java
MehrAnleitung. Ein einfaches RMI-Beispiel. (ab Java 5.0) c Y. Pfeifer. (Juni 2014)
Anleitung Ein einfaches RMI-Beispiel (ab Java.0) c Y. Pfeifer (Juni 014) 1 Ein einfaches RMI-Beispiel Vorgehensweise: 1. Java Projekt anlegen. Zwei Packages server & client erstellen Auf der Server-Seite
MehrDas erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.
Einfache Ein- und Ausgabe mit Java 1. Hallo-Welt! Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. /** Die Klasse hello sendet einen
MehrProgrammieren II. Sockets. Vorlesung 16. Handout S. 1. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester 2010. Sockets.
Programmieren II Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2010 1 / 19 2 / 19 Über einen Socket kann eine Anwendung die Implementierung des Netzwerkprotokolls des darunter liegenden Betriebssystems
MehrSocket-Programmierung unter Java
Socket-Programmierung unter Java 1 - Grundlagen: Datenströme Datenströme JAVA unterscheidet Streams und Reader/Writer Zur Dateneingabe: InputStream oder Reader Zur Datenausgabe: OutputStream oder Writer
MehrProgrammieren in Java
Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können
MehrProgrammierkurs Java
Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen
MehrThemen. Web Service - Clients. Kommunikation zw. Web Services
Themen Web Service - Clients Kommunikation zw. Web Services Bisher: Implementierung einer Java Anwendung und Bereitstellung durch Apache Axis unter Apache Tomcat Java2WSDL Erzeugen einer WSDL-Datei zur
MehrEinführung in die Programmierung
Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In
MehrE.1 Object Request Brokers
E Überblick über die 4. Übung E Überblick über die 4. Übung 1 Komponenten eines ORBs Lösungsskizze Aufgabe 2 RPC und ORB Aufrufsemantiken Hinweise Aufgabe 3 Kommunikationsschicht: tauscht Daten zwischen
MehrObjektorientierte Programmierung
Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum
MehrEinführung in die Java- Programmierung
Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113
MehrRemote Method Invocation
Remote Method Invocation Aufruf von Methoden über die Grenzen der VM hinweg. Javaprozesse der rufenden und gerufenen Methode können auf verschiedenen Hosts laufen. Eine RMI-Applikation besteht aus dem
MehrKonfigurationsanleitung Access Control Lists (ACL) Funkwerk. Copyright Stefan Dahler - www.neo-one.de 13. Oktober 2008 Version 1.0.
Konfigurationsanleitung Access Control Lists (ACL) Funkwerk Copyright Stefan Dahler - www.neo-one.de 13. Oktober 2008 Version 1.0 Seite - 1 - 1. Konfiguration der Access Listen 1.1 Einleitung Im Folgenden
Mehr3. Stored Procedures und PL/SQL
3. Stored Procedures und PL/SQL Wenn eine Anwendung auf einer Client-Maschine läuft, wird normalerweise jede SQL-Anweisung einzeln vom Client an den Server gesandt, und jedes Ergebnistupel wird einzeln
MehrMan liest sich: POP3/IMAP
Man liest sich: POP3/IMAP Gliederung 1. Einführung 1.1 Allgemeiner Nachrichtenfluss beim Versenden von E-Mails 1.2 Client und Server 1.2.1 Client 1.2.2 Server 2. POP3 2.1 Definition 2.2 Geschichte und
MehrLizenzen auschecken. Was ist zu tun?
Use case Lizenzen auschecken Ihr Unternehmen hat eine Netzwerk-Commuterlizenz mit beispielsweise 4 Lizenzen. Am Freitag wollen Sie Ihren Laptop mit nach Hause nehmen, um dort am Wochenende weiter zu arbeiten.
MehrNetzwerkprogrammierung
Netzwerkprogrammierung 1 Netzwerkverbindungen Das Entwurfsziel von Java war: Einfache Verbindung zwischen Rechnern und SetBox-Systemen. Das Standardpaket java.net hilft bei allen Netzwerkverbindungen.
MehrSocket-Programmierung unter Java
Datenströme -Programmierung unter Java 1 - Grundlagen: Datenströme JAVA unterscheidet Streams und Reader/Writer Zur Dateneingabe: InputStream oder Reader Zur Datenausgabe: OutputStream oder Writer Verwende
MehrJava-Programmierung. Remote Method Invocation - RMI
Java-Programmierung Remote Method Invocation - RMI Entwicklungsmethoden Sockets Entwurf verteilter Anwendungen ist relativ aufwändig, da zunächst ein Kommunikationsprotokoll entwickelt werden muss aufwändig
MehrObjectBridge Java Edition
ObjectBridge Java Edition Als Bestandteil von SCORE Integration Suite stellt ObjectBridge Java Edition eine Verbindung von einem objektorientierten Java-Client zu einer fast beliebigen Server-Komponente
MehrLeichte-Sprache-Bilder
Leichte-Sprache-Bilder Reinhild Kassing Information - So geht es 1. Bilder gucken 2. anmelden für Probe-Bilder 3. Bilder bestellen 4. Rechnung bezahlen 5. Bilder runterladen 6. neue Bilder vorschlagen
MehrJava RMI Remote Method Invocation
Java RMI Remote Method Invocation Ziel: Aufruf von Instanzmethoden entfernter Objekte basierend auf Java. Paket: java.rmi und Unterpakete Topologie: RMI Registry RMI Server RMI Client Der Server registriert
MehrDistributed Computing Group
JAVA TUTORIAL Distributed Computing Group Vernetzte Systeme - SS 06 Übersicht Warum Java? Interoperabilität grosse und gut dokumentierte Library weit verbreitet Syntax sehr nahe an C Erfahrung: Java wird
MehrProgrammieren 2 Selbststudium Semesterwoche 6
Programmieren 2 Selbststudium Semesterwoche 6 1. Datenströme (Basis: Handout PRG2_SW6_OOP) 1. Gehen Sie nochmals die Kontrollfragen A durch. A.1. Ein JavaProgramm liest Daten aus einem???strom. InputStream
MehrMobile und Verteilte Datenbanken
Mobile und Verteilte Datenbanken Java RMI Vorlesung Wintersemester 2013/2014 groppe@ifis.uni-luebeck.de Institut für Informationssysteme Universität zu Lübeck Kommunikations-Middleware Bietet höhere Kommunikations-Dienste
MehrPython Programmierung. Dipl.-Ing.(FH) Volker Schepper
Python Programmierung String Operationen i = 25 text1 = "Ich bin " text2 = " Jahre alt" print (text1 + str(i) + text2) print ("ich bin", i, "Jahre alt") print ("ich bin %s Jahre alt" % i) >>> Ich bin 25
MehrVerteilte Systeme - Java Networking (Sockets) -
Verteilte Systeme - Java Networking (Sockets) - Prof. Dr. Michael Cebulla 30. Oktober 2014 Fachhochschule Schmalkalden Wintersemester 2014/15 1 / 36 M. Cebulla Verteilte Systeme Gliederung Grundlagen TCP/IP
MehrClient-Server mit Socket und API von Berkeley
Client-Server mit Socket und API von Berkeley L A TEX Projektbereich Deutsche Sprache Klasse 3F Schuljahr 2015/2016 Copyleft 3F Inhaltsverzeichnis 1 NETZWERKPROTOKOLLE 3 1.1 TCP/IP..................................................
MehrObjektorientierte Programmierung. Kapitel 12: Interfaces
12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/
Mehr4-2. Generelle Mechanismen aufsetzend auf. TCP und UDP Clients und Server in Java. Kapitel 4: Interprozesskommunikation. Kodierung von Daten im Netz
TU Braunschweig Institut für Betriebssysteme und Rechnerverbund Interprozess-Kommunikation Anwendungsprogramme leben in Prozessen. Ein Prozess ist ein Objekt des Betriebssystems, durch das Anwendungen
MehrVerteilte Systeme Prof. Dr. Stefan Fischer
TU Braunschweig Institut für Betriebssysteme und Rechnerverbund Übersicht Interprozess-Kommunikation Direkte Nutzung des Netzwerk-API vs. Middleware TCP und UDP Sockets TCP und UDP Clients und Server in
MehrProgrammieren in Java
Programmieren in Java Dateien lesen und schreiben 2 Übersicht der heutigen Inhalte File Streams try-with-resources Properties csv-dateien 3 Klasse File Die Klasse java.io.file bietet Unterstützung im Umgang
MehrJavadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck
Javadoc Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle
MehrGesicherte Prozeduren
Gesicherte Prozeduren Wenn eine Anwendung auf einer Client-Maschine läuft, wird normalerweise jede SQL-Anweisung einzeln vom Client an den Server gesandt, und jedes Ergebnistupel wird einzeln zurückgeliefert.
MehrWeb Services stellen eine Integrationsarchitektur dar, die die Kommunikation zwischen verschiedenen Anwendungen
9 3 Web Services 3.1 Überblick Web Services stellen eine Integrationsarchitektur dar, die die Kommunikation zwischen verschiedenen Anwendungen mit Hilfe von XML über das Internet ermöglicht (siehe Abb.
MehrWeb Sockets mit HTML5. Quelle: www.html5rocks.com/de
Web Sockets mit HTML5 Quelle: www.html5rocks.com/de Intensive Client-Server-Kommunikation: Beispiele Online-Spiele mit mehreren Mitspielern Chat-Anwendungen Live-Sport-Ticker Echtzeit-Aktualisierungen
MehrICS-Addin. Benutzerhandbuch. Version: 1.0
ICS-Addin Benutzerhandbuch Version: 1.0 SecureGUARD GmbH, 2011 Inhalt: 1. Was ist ICS?... 3 2. ICS-Addin im Dashboard... 3 3. ICS einrichten... 4 4. ICS deaktivieren... 5 5. Adapter-Details am Server speichern...
MehrClient-Server TCP/IP - Kodierung
Client-Server TCP/IP - Kodierung Die klassen Ein (engl. Sockel) ist eine bidirektionale Netzwerk-Kommunikationsschnittstelle, deren Verwaltung das Betriebssystem übernimmt. Die Kombination aus IP-Adresse
MehrEinführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005
Einführung in Java PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005 Gliederung 1. Was ist Java / Geschichte von Java 2. Prinzip der Plattformunabhängigkeit 3. Wie kommt man vom Quellcode zum Programm
MehrSession Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de
s & Servlet Integration Ralf Gitzel ralf_gitzel@hotmail.de 1 Themenübersicht Ralf Gitzel ralf_gitzel@hotmail.de 2 Übersicht Motivation Das Interface Stateful und Stateless s Programmierung einer Stateful
Mehr4D Server v12 64-bit Version BETA VERSION
4D Server v12 64-bit Version BETA VERSION 4D Server v12 unterstützt jetzt das Windows 64-bit Betriebssystem. Hauptvorteil der 64-bit Technologie ist die rundum verbesserte Performance der Anwendungen und
MehrReferat: Netzwerkprogrammierung in Java
1.)ISO/OSI und Internet Referenzmodell Referat: Netzwerkprogrammierung in Java ISO/OSI 7 Schichtenmodell (1-Bitübertragung, 2-Sicherung, 3-Netzwerk, 4-Transport, 5-Sitzung, 6- Darstellung, 7-Anwendung)
MehrCORBA. Systemprogrammierung WS 2006-2007
CORBA Systemprogrammierung WS 2006-2007 Teilnehmer: Bahareh Akherattalab Babak Akherattalab Inhaltsverzeichnis: Verteilte Systeme Vergleich zwischen lokale und verteilte Systeme Verteilte Anwendungen CORBA
MehrNetzwerkprogrammierung & Threads
& Threads Praktikum aus Softwareentwicklung 2 Netzwerp. - 1 & Threads URL, URLConnection, UDP, TCP Threads Parallele Programme, Synchronisation, Netzwerp. - 2 Grundlagen (1/2) Kommunikation zwischen verteilten
MehrOutlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang
sysplus.ch outlook - mail-grundlagen Seite 1/8 Outlook Mail-Grundlagen Posteingang Es gibt verschiedene Möglichkeiten, um zum Posteingang zu gelangen. Man kann links im Outlook-Fenster auf die Schaltfläche
MehrVerteilte Systeme Prof. Dr. Stefan Fischer. Übersicht. Interprozess-Kommunikation. TU Braunschweig Institut für Betriebssysteme und Rechnerverbund
TU Braunschweig Institut für Betriebssysteme und Rechnerverbund Übersicht Interprozess-Kommunikation Direkte Nutzung des Netzwerk-API vs. Middleware TCP und UDP Sockets TCP und UDP Clients und Server in
MehrProblemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests.
Universität Osnabrück 1 Problemstellung 3 - Objektorientierte Programmierung in Java Vorlesung 24: Reflection 1 SS 2006 Prof. Dr. Frank M. Thiesing, FH Osnabrück Um ein Objekt anzulegen, eine seiner Methoden
MehrSEP 114. Design by Contract
Design by Contract SEP 114 Design by Contract Teile das zu entwickelnde Programm in kleine Einheiten (Klassen, Methoden), die unabhängig voneinander entwickelt und überprüft werden können. Einheiten mit
MehrVerhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...
PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:
MehrII. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:
Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen
MehrGliederung Grundlagen Schlüsselworte try-catch Fehlerobjekte Fehlerklassen Schlüsselwort finally Schlüsselwort throws selbst erstellte Exceptions
try-catch Schlüsselworte try-catch e Schlüsselwort Schlüsselwort selbst erstellte ermöglichen die Behandlung von Fehlern, die zur Laufzeit entstehen. try-catch in C: Fehler führt immer zum Abbruch des
MehrDrei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI
Universität Osnabrück Drei-Schichten-Architektur 3 - Objektorientierte Programmierung in Java Vorlesung 6: 3-Schichten-Architektur Fachkonzept - GUI SS 2005 Prof. Dr. F.M. Thiesing, FH Dortmund Ein großer
MehrBinäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen
Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders
MehrVerteilte Systeme: Übung 4
Verteilte Systeme: Übung 4 WSDL und SOAP Oliver Kleine Institut für Telematik https://www.itm.uni-luebeck.de/people/kleine SOAP Nachrichten Serialisierung in XML Root-Element einer SOAP Nachricht ist
MehrFolgende Einstellungen sind notwendig, damit die Kommunikation zwischen Server und Client funktioniert:
Firewall für Lexware professional konfigurieren Inhaltsverzeichnis: 1. Allgemein... 1 2. Einstellungen... 1 3. Windows XP SP2 und Windows 2003 Server SP1 Firewall...1 4. Bitdefender 9... 5 5. Norton Personal
MehrÜbersicht. Was ist FTP? Übertragungsmodi. Sicherheit. Öffentliche FTP-Server. FTP-Software
FTP Übersicht Was ist FTP? Übertragungsmodi Sicherheit Öffentliche FTP-Server FTP-Software Was ist FTP? Protokoll zur Dateiübertragung Auf Schicht 7 Verwendet TCP, meist Port 21, 20 1972 spezifiziert Übertragungsmodi
MehrEinführung in Javadoc
Einführung in Javadoc Johannes Rinn http://java.sun.com/j2se/javadoc Was ist Javadoc? Javadoc ist ein Werkzeug, dass eine standardisierte Dokumentation für die Programmiersprache Java unterstützt. Vorteil:
MehrDer lokale und verteilte Fall
Lokale Beans Der lokale und verteilte Fall RemoteClient Lokaler Client (JSP) RemoteSession/Entity-Bean Lokale Session/Entity-Bean 2 Lokale Beans Die bisher vorgestellten EJBswaren immer in der Lage auf
MehrOP-LOG www.op-log.de
Verwendung von Microsoft SQL Server, Seite 1/18 OP-LOG www.op-log.de Anleitung: Verwendung von Microsoft SQL Server 2005 Stand Mai 2010 1 Ich-lese-keine-Anleitungen 'Verwendung von Microsoft SQL Server
MehrVerteilte Systeme - Java Networking (Sockets) 2 -
Verteilte Systeme - Java Networking (Sockets) 2 - Prof. Dr. Michael Cebulla 06. November 2014 Fachhochschule Schmalkalden Wintersemester 2014/15 1 / 30 Michael Cebulla Verteilte Systeme Gliederung Wiederholung:
MehrFax einrichten auf Windows XP-PC
Um ein PC Fax fähig zu machen braucht man einen sogenannten Telefon Anschluss A/B das heißt, Fax funktioniert im Normalfall nur mit Modem nicht mit DSL. Die meisten neueren PCs haben ein Modem integriert.
MehrHerzlich Willkommen bei der nfon GmbH
efax Handbuch Herzlich Willkommen bei der nfon GmbH Wir freuen uns, Ihnen unser efax vorstellen zu dürfen. Mit dem efax können Sie zu jeder Zeit mit Ihrem Rechner Faxe empfangen. Sie bekommen diese dann
MehrDaniel Warneke warneke@upb.de 08.05.2006. Ein Vortrag im Rahmen des Proseminars Software Pioneers
Design Patterns Daniel Warneke warneke@upb.de 08.05.2006 Ein Vortrag im Rahmen des Proseminars Software Pioneers Design Patterns 1/23 Übersicht Einleitung / Motivation Design Patterns Beispiele Rolle des
MehrLog xmllog textlog Log() start(filename) add(message) end() instance() Abbildung 7-10: Die Protokollierungs-API mit einer einfachen Fassade
HACK #76 Hack APIs mit dem Façade-Muster vereinfachen Durch die Verwendung des Façade-Entwurfsmusters können Sie die anderen Programmierern zugängliche API vereinfachen. #76 Dies ist ein Muster, von dem
MehrSzenario 3: Service mit erweiterter Schnittstelle
2. Hintergrundverarbeitung in Android: Services und Notifications Szenarien für lokale Services Szenario 3: Service mit erweiterter Schnittstelle Ein Service bietet zusätzliche Methoden an, über die sich
MehrProxy. Krishna Tateneni Übersetzer: Stefan Winter
Krishna Tateneni Übersetzer: Stefan Winter 2 Inhaltsverzeichnis 1 Proxy-Server 4 1.1 Einführung.......................................... 4 1.2 Benutzung.......................................... 4 3 1
MehrÜberblick. Lineares Suchen
Komplexität Was ist das? Die Komplexität eines Algorithmus sei hierbei die Abschätzung des Aufwandes seiner Realisierung bzw. Berechnung auf einem Computer. Sie wird daher auch rechnerische Komplexität
MehrHow-to: Webserver NAT. Securepoint Security System Version 2007nx
Securepoint Security System Inhaltsverzeichnis Webserver NAT... 3 1 Konfiguration einer Webserver NAT... 4 1.1 Einrichten von Netzwerkobjekten... 4 1.2 Erstellen von Firewall-Regeln... 6 Seite 2 Webserver
MehrJava: Vererbung. Teil 3: super() www.informatikzentrale.de
Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und
MehrObjektorientierte Programmierung
Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Zusatzaufgaben Lösungsvorschlag Objektorientierte Programmierung Lösung 22 (Java und UML-Klassendiagramm)
MehrFastViewer Remote Edition 2.X
FastViewer Remote Edition 2.X Mit der FastViewer Remote Edition ist es möglich beliebige Rechner, unabhängig vom Standort, fernzusteuern. Die Eingabe einer Sessionnummer entfällt. Dazu muß auf dem zu steuernden
Mehri n g e n i e u r b ü r o f ü r s o f t w a r e t e c h n o l o g i e w w w. v o e l t e r. d e Servlet Debugging
Servlet Debugging Markus Völter, voelter@acm.org, www.voelter.de Bei der Arbeit mit Servlets kommt man recht schnell an den Punkt, an dem man Servlets vernünftig testen oder debuggen will. Mit Hilfe des
MehrEasyWk DAS Schwimmwettkampfprogramm
EasyWk DAS Schwimmwettkampfprogramm Arbeiten mit OMEGA ARES 21 EasyWk - DAS Schwimmwettkampfprogramm 1 Einleitung Diese Präsentation dient zur Darstellung der Zusammenarbeit zwischen EasyWk und der Zeitmessanlage
MehrHIT-Software Installieren und Starten der Netzwerklizenz als Download-Anwendung
HIT-Software Installieren und Starten der Netzwerklizenz als Download-Anwendung Grundsätzliches Die HIT-Software ist eines der drei Module des Lernkonzepts HEIDENHAIN Interactive Training für Steuerungen
MehrDesign Patterns 2. Model-View-Controller in der Praxis
Design Patterns 2 Model-View-Controller in der Praxis Design Patterns Oft Schablonen für eine Klassenstruktur... aber nicht immer! Dahinterliegende Konzepte wichtiger als wörtliche Umsetzung Pattern werden
MehrESB - Elektronischer Service Bericht
Desk Software & Consulting GmbH ESB - Elektronischer Service Bericht Dokumentation des elektronischen Serviceberichts Matthias Hoffmann 25.04.2012 DESK Software und Consulting GmbH Im Heerfeld 2-4 35713
MehrTutorial - www.root13.de
Tutorial - www.root13.de Netzwerk unter Linux einrichten (SuSE 7.0 oder höher) Inhaltsverzeichnis: - Netzwerk einrichten - Apache einrichten - einfaches FTP einrichten - GRUB einrichten Seite 1 Netzwerk
MehrAcceptor-Connector. Acceptor-Connector
Acceptor-Connector Das Acceptor-Connector Pattern trennt den Verbindungsaufbau zwischen zwei Peer-Services und der Verarbeitung, welche bei bestehender Verbindung durchgeführt wird. Kontext Ein Netzwerksystem
MehrSenden von strukturierten Berichten über das SFTP Häufig gestellte Fragen
Senden von strukturierten Berichten über das SFTP Häufig gestellte Fragen 1 Allgemeines Was versteht man unter SFTP? Die Abkürzung SFTP steht für SSH File Transfer Protocol oder Secure File Transfer Protocol.
MehrDas Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala
Das Typsystem von Scala 1 Eigenschaften Das Typsystem von Scala ist statisch, implizit und sicher 2 Nichts Primitives Alles ist ein Objekt, es gibt keine primitiven Datentypen scala> 42.hashCode() res0:
MehrEs sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.
Schritt 1: Installation des Javacompilers JDK. Der erste Start mit Eclipse Bevor Sie den Java-Compiler installieren sollten Sie sich vergewissern, ob er eventuell schon installiert ist. Gehen sie wie folgt
MehrInhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER
AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER Inhalt 1 Einleitung... 1 2 Einrichtung der Aufgabe für die automatische Sicherung... 2 2.1 Die Aufgabenplanung... 2 2.2 Der erste Testlauf... 9 3 Problembehebung...
MehrLeitfaden zur Nutzung von binder CryptShare
Leitfaden zur Nutzung von binder CryptShare Franz Binder GmbH & Co. Elektrische Bauelemente KG Rötelstraße 27 74172 Neckarsulm Telefon +49 (0) 71 32-325-0 Telefax +49 (0) 71 32-325-150 Email info@binder-connector
MehrSoftware Engineering Klassendiagramme Assoziationen
Software Engineering Klassendiagramme Assoziationen Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Lesen von Multiplizitäten (1) Multiplizitäten werden folgendermaßen
MehrDelegatesund Ereignisse
Delegatesund Ereignisse «Delegierter» Methoden Schablone Funktionszeiger Dr. Beatrice Amrhein Überblick Definition eines Delegat Einfache Delegate Beispiele von Delegat-Anwendungen Definition eines Ereignisses
MehrStefan Dahler. 1. Remote ISDN Einwahl. 1.1 Einleitung
1. Remote ISDN Einwahl 1.1 Einleitung Im Folgenden wird die Konfiguration einer Dialup ISDN Verbindungen beschrieben. Sie wählen sich über ISDN von einem Windows Rechner aus in das Firmennetzwerk ein und
Mehr1 Vom Problem zum Programm
Hintergrundinformationen zur Vorlesung GRUNDLAGEN DER INFORMATIK I Studiengang Elektrotechnik WS 02/03 AG Betriebssysteme FB3 Kirsten Berkenkötter 1 Vom Problem zum Programm Aufgabenstellung analysieren
MehrTCP/UDP. Transport Layer
TCP/UDP Transport Layer Lernziele 1. Wozu dient die Transportschicht? 2. Was passiert in der Transportschicht? 3. Was sind die wichtigsten Protkolle der Transportschicht? 4. Wofür wird TCP eingesetzt?
MehrTipps und Tricks zur Installation von Java-basierten Programmen auf Handys
Tipps und Tricks zur Installation von Java-basierten Programmen auf Handys VORLÄUFIG Inhaltsverzeichnis 1.0 Allgemein...3 1.1 Voraussetzungen für die MODESCO BT-HandeySec Programme...3 2.0 Installation...3
MehrFirmware-Update, CAPI Update
Produkt: Modul: Kurzbeschreibung: Teldat Bintec Router RT-Serie Firmware-Update, CAPI Update Diese Anleitung hilft Ihnen, das nachfolgend geschilderte Problem zu beheben. Dazu sollten Sie über gute bis
MehrStep by Step Webserver unter Windows Server 2003. von Christian Bartl
Step by Step Webserver unter Windows Server 2003 von Webserver unter Windows Server 2003 Um den WWW-Server-Dienst IIS (Internet Information Service) zu nutzen muss dieser zunächst installiert werden (wird
Mehr