VS: Verteilte Systeme Kap. 02 Kommunikation Prinzipien und Realisierung mit Sockets. Wolfgang Wiedermann FH Regensburg FH. Teil 1

Größe: px
Ab Seite anzeigen:

Download "VS: Verteilte Systeme Kap. 02 Kommunikation Prinzipien und Realisierung mit Sockets. Wolfgang Wiedermann FH Regensburg FH. Teil 1"

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) Transmission Control Protocol (TCP) Verbindungsorientiertes Protokoll, zuverlässig, paketvermittelt stream-orientiert bidirektional gehört zur Transportschicht, OSI-Layer 4 spezifiziert in RFC 793 Mobile

Mehr

Programmieren I. Kapitel 15. Ein und Ausgabe

Programmieren 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

Mehr

Programmieren II. Timer. Vorlesung 11. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Sommersemester 2011. Timer. Sockets.

Programmieren 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

Ü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

Mehr

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

FOPT 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

Mehr

VS Praktikum 03 Konzept

VS 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:

Mehr

Programmiermethodik. Übung 13

Programmiermethodik. Ü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

Mehr

Anleitung. Ein einfaches RMI-Beispiel. (ab Java 5.0) c Y. Pfeifer. (Juni 2014)

Anleitung. 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

Mehr

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Das 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

Mehr

Programmieren II. Sockets. Vorlesung 16. Handout S. 1. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester 2010. Sockets.

Programmieren 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

Mehr

Socket-Programmierung unter Java

Socket-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

Mehr

Programmieren in Java

Programmieren 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

Mehr

Programmierkurs Java

Programmierkurs 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

Mehr

Themen. Web Service - Clients. Kommunikation zw. Web Services

Themen. 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

Mehr

Einführung in die Programmierung

Einfü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

Mehr

E.1 Object Request Brokers

E.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

Mehr

Objektorientierte Programmierung

Objektorientierte 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

Mehr

Einführung in die Java- Programmierung

Einfü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

Mehr

Remote Method Invocation

Remote 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

Mehr

Konfigurationsanleitung 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. 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

Mehr

3. Stored Procedures und PL/SQL

3. 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

Mehr

Man liest sich: POP3/IMAP

Man 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

Mehr

Lizenzen auschecken. Was ist zu tun?

Lizenzen 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.

Mehr

Netzwerkprogrammierung

Netzwerkprogrammierung Netzwerkprogrammierung 1 Netzwerkverbindungen Das Entwurfsziel von Java war: Einfache Verbindung zwischen Rechnern und SetBox-Systemen. Das Standardpaket java.net hilft bei allen Netzwerkverbindungen.

Mehr

Socket-Programmierung unter Java

Socket-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

Mehr

Java-Programmierung. Remote Method Invocation - RMI

Java-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

Mehr

ObjectBridge Java Edition

ObjectBridge 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

Mehr

Leichte-Sprache-Bilder

Leichte-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

Mehr

Java RMI Remote Method Invocation

Java 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

Mehr

Distributed Computing Group

Distributed 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

Mehr

Programmieren 2 Selbststudium Semesterwoche 6

Programmieren 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

Mehr

Mobile und Verteilte Datenbanken

Mobile 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

Mehr

Python Programmierung. Dipl.-Ing.(FH) Volker Schepper

Python 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

Mehr

Verteilte Systeme - Java Networking (Sockets) -

Verteilte 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

Mehr

Client-Server mit Socket und API von Berkeley

Client-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..................................................

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

Objektorientierte 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/

Mehr

4-2. Generelle Mechanismen aufsetzend auf. TCP und UDP Clients und Server in Java. Kapitel 4: Interprozesskommunikation. Kodierung von Daten im Netz

4-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

Mehr

Verteilte Systeme Prof. Dr. Stefan Fischer

Verteilte 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

Mehr

Programmieren in Java

Programmieren 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

Mehr

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Javadoc. 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

Mehr

Gesicherte Prozeduren

Gesicherte 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.

Mehr

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

Web 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.

Mehr

Web Sockets mit HTML5. Quelle: www.html5rocks.com/de

Web 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

Mehr

ICS-Addin. Benutzerhandbuch. Version: 1.0

ICS-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...

Mehr

Client-Server TCP/IP - Kodierung

Client-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

Mehr

Einfü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 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

Mehr

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

Session 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

Mehr

4D Server v12 64-bit Version BETA VERSION

4D 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

Mehr

Referat: Netzwerkprogrammierung in Java

Referat: 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)

Mehr

CORBA. Systemprogrammierung WS 2006-2007

CORBA. 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

Mehr

Netzwerkprogrammierung & Threads

Netzwerkprogrammierung & 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

Mehr

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Outlook. 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

Mehr

Verteilte Systeme Prof. Dr. Stefan Fischer. Übersicht. Interprozess-Kommunikation. TU Braunschweig Institut für Betriebssysteme und Rechnerverbund

Verteilte 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

Mehr

Problemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests.

Problemstellung. 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

Mehr

SEP 114. Design by Contract

SEP 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

Mehr

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Verhindert, 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:

Mehr

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

II. 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

Mehr

Gliederung Grundlagen Schlüsselworte try-catch Fehlerobjekte Fehlerklassen Schlüsselwort finally Schlüsselwort throws selbst erstellte Exceptions

Gliederung 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

Mehr

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

Drei-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

Mehr

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

Binä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

Mehr

Verteilte Systeme: Übung 4

Verteilte 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

Mehr

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

Folgende 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

Ü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

Mehr

Einführung in Javadoc

Einfü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:

Mehr

Der lokale und verteilte Fall

Der 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

Mehr

OP-LOG www.op-log.de

OP-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

Mehr

Verteilte Systeme - Java Networking (Sockets) 2 -

Verteilte 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:

Mehr

Fax einrichten auf Windows XP-PC

Fax 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.

Mehr

Herzlich Willkommen bei der nfon GmbH

Herzlich 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

Mehr

Daniel Warneke warneke@upb.de 08.05.2006. Ein Vortrag im Rahmen des Proseminars Software Pioneers

Daniel 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

Mehr

Log xmllog textlog Log() start(filename) add(message) end() instance() Abbildung 7-10: Die Protokollierungs-API mit einer einfachen Fassade

Log 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

Mehr

Szenario 3: Service mit erweiterter Schnittstelle

Szenario 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

Mehr

Proxy. Krishna Tateneni Übersetzer: Stefan Winter

Proxy. 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

Ü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

Mehr

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

How-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

Mehr

Java: Vererbung. Teil 3: super() www.informatikzentrale.de

Java: 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

Mehr

Objektorientierte Programmierung

Objektorientierte 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)

Mehr

FastViewer Remote Edition 2.X

FastViewer 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

Mehr

i 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

i 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

Mehr

EasyWk DAS Schwimmwettkampfprogramm

EasyWk 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

Mehr

HIT-Software Installieren und Starten der Netzwerklizenz als Download-Anwendung

HIT-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

Mehr

Design Patterns 2. Model-View-Controller in der Praxis

Design 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

Mehr

ESB - Elektronischer Service Bericht

ESB - 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

Mehr

Tutorial - www.root13.de

Tutorial - 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

Mehr

Acceptor-Connector. Acceptor-Connector

Acceptor-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

Mehr

Senden von strukturierten Berichten über das SFTP Häufig gestellte Fragen

Senden 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.

Mehr

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

Das 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:

Mehr

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Es 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

Mehr

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Inhalt. 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...

Mehr

Leitfaden zur Nutzung von binder CryptShare

Leitfaden 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

Mehr

Software Engineering Klassendiagramme Assoziationen

Software 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

Mehr

Delegatesund Ereignisse

Delegatesund Ereignisse Delegatesund Ereignisse «Delegierter» Methoden Schablone Funktionszeiger Dr. Beatrice Amrhein Überblick Definition eines Delegat Einfache Delegate Beispiele von Delegat-Anwendungen Definition eines Ereignisses

Mehr

Stefan Dahler. 1. Remote ISDN Einwahl. 1.1 Einleitung

Stefan 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

Mehr

1 Vom Problem zum Programm

1 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

Mehr

TCP/UDP. Transport Layer

TCP/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?

Mehr

Tipps und Tricks zur Installation von Java-basierten Programmen auf Handys

Tipps 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

Mehr

Firmware-Update, CAPI Update

Firmware-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

Mehr

Step by Step Webserver unter Windows Server 2003. von Christian Bartl

Step 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