Beispiel Time Client/Server



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

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

Transmission Control Protocol (TCP)

Praktikum Datenbanksysteme. Ho Ngoc Duc IFIS - Universität zu Lübeck

Studentische Lösung zum Übungsblatt Nr. 7

TCP/IP Programmierung. C# TimeServer Java6 TimeClient

Programmierung in C. Grundlagen. Stefan Kallerhoff

Dr. Monika Meiler. Inhalt

Delegatesund Ereignisse

Programmieren in Java

Programmiermethodik. Übung 13

Java 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7

Musterlösungen zur Klausur Informatik 3

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2015/2016 Wirtschaftsingenieur Bachelor 5. Aufgabe Datenstruktur, Dateieingabe und -ausgabe

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

Übung Grundlagen der Programmierung. Übung 05: Arrays. Abgabetermin: xx.xx.xxxx. Java-Programm Testplan Testergebnisse

Java-Programmierung. Remote Method Invocation - RMI

Netzwerkprogrammierung

Remote Method Invocation

Einführung in die Programmierung

Linux Prinzipien und Programmierung

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

Client-Server TCP/IP - Kodierung

Anwahlprogramm. zur. Modem-Schnittstelle TH004

WPF Steuerelemente Listbox, ComboBox, ListView,

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

IT in der Arztpraxis Technisches Handbuch zum Kodierassistenten

1 Vom Problem zum Programm

Technische Hochschule Georg Agricola WORKSHOP TEIL 3. IKT (Informations- und Kommunikationstechnik) an einer MorseApp erklärt

Grundlagen der Programmierung Prof. H. Mössenböck. 14. Schrittweise Verfeinerung

Betriebshandbuch. MyInTouch Import Tool

Einführung in die Programmierung

Java: Vererbung. Teil 3: super()

Programmierkurs Java

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

2A Basistechniken: Weitere Aufgaben

Datenbanken 1. Einführung und Zugänge für die eingesetzten Resourcen. ISWeb - Information Systems & Semantic Web University of Koblenz Landau, Germany

3 Konfiguration OfficeMaster 3.10 SNMP

Exceptions: Parameterprüfung import java.io.ioexception;

Große Übung Praktische Informatik 1

Protokollbeschreibung Modbus TCP für EMU TCP/IP Modul

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben

Zählen von Objekten einer bestimmten Klasse

How To: Wie entwickle ich mit SharpDevelop Anwendungen für die PocketPC-Platform

Eine Anwendung mit InstantRails 1.7

MSXFORUM - Exchange Server 2003 > SMTP Konfiguration von Exchange 2003

Klausur zur Vorlesung Verteilte Systeme im SS 2007 Prof. Dr. Odej Kao 24. Juli 2007

Angaben zu einem Kontakt...1 So können Sie einen Kontakt erfassen...4 Was Sie mit einem Kontakt tun können...7

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Electronic Systems GmbH & Co. KG

Verbindungen zu mehreren Clients. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 23: Netzwerkprogrammierung/ Kommunikation 2

Handbuch für Nutzer von Zertifikaten der Zertifizierungsstellen (CAs) des Bayerischen Behördennetzes (BYBN) zur Sicherung von s Teil C3:

Angewandte Mathematik und Programmierung

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Einführung in Javadoc

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

Graphic Coding. Klausur. 9. Februar Kurs A

5. Tutorium zu Programmieren

Folgende Voraussetzungen für die Konfiguration müssen erfüllt sein: - Ein Bootimage ab Version Optional einen DHCP Server.

DHBW Karlsruhe, Vorlesung Programmieren, Events Musterlösung

ecaros2 Installer procar informatik AG 1 Stand: FS 09/2012 Eschenweg Weiterstadt

Objektorientierte Programmierung

Automatisierung ( Fernsteuerung ) von Excel unter Microsoft Windows Tilman Küpper (tilman.kuepper@hm.edu)

Teil 1: Ein einfacher Chat

NODELOCKED LIZENZ generieren (ab ST4)

Referat: Netzwerkprogrammierung in Java

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

public class SternchenRechteckGefuellt {

Einführung in die Programmierung Blockkurs Java

Medea3 Print-Client (m3_print)

Voraussetzungen für die Nutzung der Format Rechenzentrumslösung (Hosting)

TimeMachine. Time CGI. Version 1.5. Stand Dokument: time.odt. Berger EDV Service Tulbeckstr München

5 DATEN Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

INHALT. Troubleshooting Netzwerkinstallation

Informatik Repetitorium SS Volker Jaedicke

Thermoguard. Thermoguard CIM Custom Integration Module Version 2.70

Bei Verwendung der Kaskade dürfen nur am letzten Baustein die Ausgänge A1-A4 verwendet werden!

Einführung in die Scriptsprache PHP

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

Einführung in die Programmierung für Wirtschaftsinformatik

Anbindung des eibport an das Internet

WebService in Java SE und EE

Grundlagen der Programmierung Prof. H. Mössenböck. 3. Verzweigungen

Webalizer HOWTO. Stand:

A. Ersetzung einer veralteten Govello-ID ( Absenderadresse )

Erwin Grüner

C-Probeklausur (Informatik 1; Umfang: C, Teil 1; SS07)

Handbuch. timecard Connector Version: REINER SCT Kartengeräte GmbH & Co. KG Goethestr Furtwangen

CodeSaver. Vorwort. Seite 1 von 6

Der lokale und verteilte Fall

Um über FTP Dateien auf Ihren Public Space Server - Zugang laden zu können benötigen Sie folgende Angaben:

GITS Steckbriefe Tutorial

Informatik I: Einführung in die Programmierung

C.M.I. Control and Monitoring Interface. Zusatzanleitung: Datentransfer mit CAN over Ethernet (COE) Version 1.08

Über die Status-Befehle kann die Peripherie der gesamten Hard- und Firmware abgefragt werden.

Transkript:

Beispiel Time Client/Server /** * * Programmbeschreibung: * --------------------- * Dieses Programm ermittelt über eine TCP/IP-Verbindung die Uhrzeit eines * entfernten Rechners, wobei es sowohl die Rolle des Servers als auch * des Clients einnehmen kann. * Auf dem Rechner, von dem die Uhrzeit ermittelt werden soll, muß dieses * Programm im Modus Server (Parameter -s) gestartet werden. Dann wartet * es auf dem als Parameter übergebenen Port auf Anforderungen anderer * Rechner und sendet das aktuelle Datum und Uhrzeit in Form einer * Zeichenkette zurück. * Im Modus Client (Parameter -c) baut es eine Verbindung zum Port des * übergebenen Rechners auf und gibt die zurückgemeldete Uhrzeit aus. * * @author Peter René Dietmüller * @version 1.0, 01/99 * */ import java.io.*; import java.net.*; import java.text.dateformat; import java.util.date; Seite 1 von 20

public class Time { /* -- Time Server -- */ public static void StartServer(int port) { Socket client = null; /* Socket des Clients */ String cip; /* IP-Adresse des Clients */ int cport; /* Port des Clients */ PrintWriter cout; /* Ausgabestrom zum Client */ ServerSocket server = null; /* Socket des Servers */ String time; /* versendete Uhrzeit */ /* -- Server starten -- */ System.out.println("Starte Server und warte auf Port " + port + "... (Mit Strg-C beenden)"); try { server = new ServerSocket(port); while(true) { /* -- Auf eingehende Verbindung warten -- */ client = server.accept(); cip = client.getinetaddress().gethostaddress(); cport = client.getport(); cout = new PrintWriter(client.getOutputStream(), true); /* -- Uhrzeit ermitteln -- */ time = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL).format(new Date()); Seite 2 von 20

/* -- Uhrzeit senden -- */ cout.println(time); /* -- Trace ausgeben -- */ System.out.println(cip + ":" + cport + " " + time); /* -- Verbindung schließen -- */ client.close(); catch(ioexception e) { System.out.println("Server: " + e.tostring()); finally { /* -- Socket schließen -- */ try { if (server!= null) server.close(); System.out.println("Server gestoppt."); catch (IOException e) { System.out.println("Server.close(): " + e.tostring()); Seite 3 von 20

/* -- Time Client: Abfrage der Uhrzeit -- */ public static void StartClient(String server, int port) { String line; BufferedReader in; Socket s; System.out.println("Baue Verbindung zum Rechner " + server + ":" + port + " auf."); try { /* -- Verbindungsaufbau -- */ s = new Socket(server, port); s.setsotimeout(1000); in = new BufferedReader(new InputStreamReader(s.getInputStream())); System.out.println("Verbindung zum Rechner aufgebaut."); /* -- Lese Uhrzeit des Servers -- */ line = in.readline(); if (line!= null) { System.out.println("Die Uhrzeit ist: " + line); /* -- Schließe Verbindung -- */ s.close(); catch(unknownhostexception e) { System.out.println("Der Server " + server + " ist unbekannt."); Seite 4 von 20

catch(ioexception e) { System.out.println("Timeout"); /* -- Hilfetext -- */ public static void Usage() { System.out.println(); System.out.println("Time ermittelt die Uhrzeit eines anderen Rechners."); System.out.println("(C)opryright by Peter René Dietmüller, 1998-99."); System.out.println(); System.out.println("Damit die Uhrzeit eines entfernten Rechners abgefragt"); System.out.println("werden kann, muß dieses Programm auf dem entfernten Rechner"); System.out.println("in der Betriebsart Server laufen."); System.out.println(); System.out.println("Aufruf: java Time -s <port> -c <server> <port>"); System.out.println(); System.out.println(" -s... Programm wird in der Betriebsart Server"); System.out.println(" gestartet. In diesem Modus wartet das"); System.out.println(" Programm auf Anfragen und sendet die Uhrzeit"); System.out.println(" des Rechners, auf dem es läuft."); System.out.println(" -c... Programm wird in der Betriebsart Client"); System.out.println(" gestartet. In diesem Modus wird die Uhrzeit"); System.out.println(" eines anderen Rechners abgefragt."); System.out.println(" <server>.. Name oder IP-Adresse des Servers."); System.out.println(" <port>... Portnummer, auf der die Kommunikation"); System.out.println(" stattfinden soll."); System.out.println(); Seite 5 von 20

/* -- Hauptprogramm -- */ public static void main(string[] args) { int String port; server; /* -- Parameter prüfen -- */ if (args.length >= 1) { /* -- Server -- */ if (args[0].equalsignorecase("-s")) { if (args.length >= 2) { try { port = Integer.parseInt(args[1]); StartServer(port); catch(numberformatexception e) { System.out.println("Sie haben als Port keine Zahl angegeben."); Usage(); else { System.out.println("Sie haben zu wenig Parameter angegeben."); Usage(); Seite 6 von 20

/* -- Client -- */ else if (args[0].equalsignorecase("-c")) { if (args.length >= 3) { server = args[1]; try { port = Integer.parseInt(args[2]); StartClient(server, port); catch(numberformatexception e) { System.out.println("Sie haben als Port keine Zahl angegeben."); Usage(); else { System.out.println("Sie haben zu wenig Parameter angegeben."); Usage(); /* -- Falscher erster Parameter -- */ else { System.out.println("Der erste Parameter ist falsch."); Usage(); /* -- args.length < 1 --> Falsche Anzahl der Parameter -- */ else { System.out.println("Sie haben zu wenig Parameter angegeben."); Usage(); Seite 7 von 20

Test Server L:\PDI\LVA\Ppk2\LEKTIO~4\Time>java Time -s 3000 Starte Server und warte auf Port 3000... (Mit Strg-C beenden) 127.0.0.1:1224 Montag, 11. Jänner 1999 16:52 Uhr GMT+01:00 127.0.0.1:1225 Montag, 11. Jänner 1999 16:53 Uhr GMT+01:00 127.0.0.1:1226 Montag, 11. Jänner 1999 16:53 Uhr GMT+01:00 140.78.131.99:1227 Montag, 11. Jänner 1999 16:53 Uhr GMT+01:00 127.0.0.1:1230 Montag, 11. Jänner 1999 16:54 Uhr GMT+01:00 127.0.0.1:1231 Montag, 11. Jänner 1999 16:54 Uhr GMT+01:00 140.78.131.99:1232 Montag, 11. Jänner 1999 16:54 Uhr GMT+01:00 ^C Seite 8 von 20

Test Client L:\PDI\LVA\Ppk2\LEKTIO~4\Time>java Time -c localhost 3000 Baue Verbindung zum Rechner localhost:3000 auf. Verbindung zum Rechner aufgebaut. Die Uhrzeit ist: Montag, 11. Jänner 1999 16:54 Uhr GMT+01:00 L:\PDI\LVA\Ppk2\LEKTIO~4\Time>java Time -c 127.0.0.1 3000 Baue Verbindung zum Rechner 127.0.0.1:3000 auf. Verbindung zum Rechner aufgebaut. Die Uhrzeit ist: Montag, 11. Jänner 1999 16:54 Uhr GMT+01:00 L:\PDI\LVA\Ppk2\LEKTIO~4\Time>java Time -c pdi.fim.uni-linz.ac.at 3000 Baue Verbindung zum Rechner pdi.fim.uni-linz.ac.at:3000 auf. Verbindung zum Rechner aufgebaut. Die Uhrzeit ist: Montag, 11. Jänner 1999 16:54 Uhr GMT+01:00 L:\PDI\LVA\Ppk2\LEKTIO~4\Time>java Time -c localhost 2000 Baue Verbindung zum Rechner localhost:2000 auf. Timeout L:\PDI\LVA\Ppk2\LEKTIO~4\Time>java Time -c localhost 80 Baue Verbindung zum Rechner localhost:80 auf. Verbindung zum Rechner aufgebaut. Timeout Seite 9 von 20

Beispiel WWW-Server /** * * Programmbeschreibung: * --------------------- * Es handelt sich um einen vereinfachten WEB-Server, der nach dem dem Hypertext * Transfer Protocol Version 1.0 arbeitet und nur den Befehl GET versteht. Wird * ein anderer Befehl gesendet, so bleibt dieser unbeantwortet. * Dieser Server wertet nur die gesendete URL aus. Header-Zeilen, wie zum Beispiel * Accept, If-Modified-Since, werden nicht berücksichtigt. * * @author Peter René Dietmüller * @version 1.0, 01/99 * */ import java.io.*; import java.net.*; import java.util.*; import java.text.*; Seite 10 von 20

/** * Thread WWWVerbindung * -------------------- * Für jede eingegangene Verbindung wird ein Exemplar der Klasse WWWVerbindung * angelegt, die sich um die Anfrage kümmert. */ class WWWVerbindung extends Thread { /* -- Datumsformat -- */ static DateFormat df = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM, Locale.UK); Socket s; /* Socket, auf dem die Anfrage kam */ String rootdir; /* Wurzelverzeichnis des WWW-Servers */ public WWWVerbindung(Socket s, String rootdir) { this.s = s; this.rootdir = rootdir; private void PrintLog(String ip, int port, String line) { System.out.println(ip + ":" + port + ", " + line); { /* sendet den Header für ein HTML-Objekt */ private void SendHeader(PrintWriter sout, String rsp, String ctt, long ctl, Date lm) sout.println("http/1.0 " + rsp); sout.println("server: PDI/0.1Beta"); Seite 11 von 20

if (!ctt.equals("")) sout.println("content-type: " + ctt); sout.println("content-length: " + ctl); sout.println("date: " + df.format(new Date())); if (lm!= null) sout.println("last-modified: " + df.format(lm)); sout.println(); sout.flush(); /* sendet den Inhalt einer Datei */ private void SendFile(File f, OutputStream os) { int len; byte[] data; FileInputStream fin; /* -- Initialisieren -- */ fin = null; data = new byte[1024]; try { /* -- InputStream anlegen -- */ fin = new FileInputStream(f); /* -- Daten kopieren -- */ while ((len = fin.read(data)) > 0) os.write(data, 0, len); catch(filenotfoundexception e) { catch(ioexception e) { finally { Seite 12 von 20

try { if (fin!= null) fin.close(); catch(ioexception ioe) { /* sendet eine Fehlermeldung an den Client */ private void SendError(PrintWriter sout, int error) { String errmsg; /* -- Fehlermeldung festlegen -- */ switch(error) { case 200: errmsg = "OK"; break; case 404: errmsg = "Objekt nicht gefunden"; break; default: errmsg = "unbekannter Fehler"; break; /* -- Header -- */ SendHeader(sout, error + " " + errmsg, "", 0, null); /* -- Fehlermeldung -- */ sout.println("<html>"); sout.println("<head>"); sout.println("<title>fehler " + error + ": " + errmsg + "</TITLE>"); sout.println("</head>"); sout.println("<body>"); sout.println("<h1>fehler " + error + ": " + errmsg + "</H1>"); Seite 13 von 20

sout.println("</body>"); sout.println("</html>"); sout.flush(); public void run() { /* -- HTTP-Befehle -- */ final int CMD_GET = 1; final int CMD_POST = 2; String ctt; /* Content-Type */ int cmd; /* gesendeter Befehl */ String ext; /* Extension d. lok. N. */ String fn; /* lokaler Dateiname */ File f; /* lokale Datei */ String ip; /* IP Adresse d. Client */ String line; /* gesendete Zeile */ Date lm; /* letzte Änderung (last modified) der lokalen Datei */ int port; /* Port d. Client */ String url; /* gewünschte URL */ /* -- Variablen initialisieren -- */ cmd = 0; ip = ""; port = 0; url = ""; Seite 14 von 20

try { /* -- Variablen setzen -- */ ip = this.s.getinetaddress().gethostaddress(); port = this.s.getport(); /****************************/ /* Gesendete Daten einlesen */ /****************************/ BufferedReader sin = new BufferedReader( new InputStreamReader(this.s.getInputStream())); line = sin.readline(); while (line.length() > 0) { /* -- Trace ausgeben -- */ //PrintLog(ip, port, line); /* -- Verarbeite GET-Befehl -- */ if (line.startswith("get")) { /* -- Befehl merken -- */ cmd = CMD_GET; /* -- URL ermitteln -- */ url = ""; int endofurl = line.indexof(' ', 4); if (endofurl > 4) url = line.substring(4, endofurl); line = sin.readline(); Seite 15 von 20

/*********************************/ /* Gesendeten Befehl verarbeiten */ /*********************************/ if (cmd == CMD_GET) { /* -- Variable url enthält den angeforderten URL -- */ PrintLog(ip, port, "GET " + url); /* -- lokalen Dateinamen ermitteln -- */ f = new File(this.rootDir + url); if (f.isdirectory()) f = new File(f + "default.htm"); /* -- Extension ermitteln -- */ ext = ""; fn = f.getabsolutepath(); int startofext = fn.lastindexof('.'); if ((startofext > fn.lastindexof('/')) && (startofext > 0)) ext = fn.substring(startofext + 1); /* Anmerkung: Wenn der Dateiname zum Beispiel ab.cd/xy lautet, dann bekommt * startofext den Wert 2 und als Extension würde cd/xy herauskommen, was * natürlich falsch ist. Die zusätzliche Bedingung * startofext > lastindexof('/') verhindert, daß eine Extension eines * Verzeichnisnamens herangezogen wird. */ /* -- Content-Type ermitteln -- */ ctt = ""; if (ext.equalsignorecase("htm") ext.equalsignorecase("html")) ctt = "text/html"; else if (ext.equalsignorecase("gif")) ctt = "image/gif"; Seite 16 von 20

else if (ext.equalsignorecase("jpg") ext.equalsignorecase("jpeg")) ctt = "image/jpeg"; else if (ext.equalsignorecase("txt") ext.equalsignorecase("text")) ctt = "text/plain"; /* -- HTML-Seite zurücksenden -- */ PrintWriter sout = new PrintWriter(this.s.getOutputStream()); if (f.exists() && f.canread()) { lm = new Date(f.lastModified()); SendHeader(sout, "200 OK", ctt, f.length(), lm); SendFile(f, this.s.getoutputstream()); PrintLog(ip, port, f.getabsolutepath() + " gesendet."); else { /* HTML-Objekt existiert nicht */ SendError(sout, 404); catch(ioexception e) { System.out.println(ip + ":" + port + " IOException"); finally { /* -- Verbindung schließen -- */ try { this.s.close(); catch(ioexception ioe) { Seite 17 von 20

public class WWWServer { /* -- Konstanten -- */ final static int PORT = 80; /* -- Hauptprogramm -- */ public static void main(string[] args) { ServerSocket ss = null; /* Server Socket */ Socket cs = null; /* Client Socket */ String rootdir = ""; /* Wurzelverzeichnis des Servers */ /* -- Startmeldung ausgeben -- */ System.out.println(); System.out.println("WWWServer - Einfacher WWW-Server"); System.out.println("(C)opyright by Peter René Dietmüller, 1998-99"); System.out.println(); /* -- Parameter verarbeiten -- */ if (args.length!= 1) { System.out.println("Sie haben keinen oder zu viele Parameter angegeben."); System.out.println(); System.out.println("Aufruf: java WWWServer <RootDirectory>"); System.out.println(); return; rootdir = args[0]; if (!(new File(rootDir)).exists()) { System.out.println("Das Verzeichnis " + rootdir + " existiert nicht."); System.out.println(); return; Seite 18 von 20

/* -- Server starten -- */ System.out.println("Starte WWW-Server auf Port " + PORT + "... (mit Strg+C beenden)"); try { /* -- Warte auf eingehende Verbindungen -- */ ss = new ServerSocket(PORT); while (true) { /* Endlosschleife */ cs = ss.accept(); (new WWWVerbindung(cs, rootdir)).start(); catch(ioexception e) { System.out.println("Port " + PORT + " ist bereits belegt."); finally { if (ss!= null) { try { ss.close(); catch(ioexception ioe) { System.out.println("Beende WWW-Server..."); Seite 19 von 20

Test WWW-Server WWWServer - Einfacher WWW-Server (C)opyright by Peter René Dietmüller, 1998-99 Starte WWW-Server auf Port 80... (mit Strg+C beenden) 127.0.0.1:1360, GET / 127.0.0.1:1360, y:\http/default.htm gesendet. 127.0.0.1:1361, GET /new.htm 127.0.0.1:1361, y:\http/new.htm gesendet. 127.0.0.1:1362, GET /pow/pow.gif 127.0.0.1:1363, GET /CDrag.jpg 127.0.0.1:1362, y:\http/pow/pow.gif gesendet. 127.0.0.1:1363, y:\http/cdrag.jpg gesendet. 127.0.0.1:1364, GET /aushaenge/981210_diplomarbeitsthema_xsat.html 127.0.0.1:1364, y:\http/aushaenge/981210_diplomarbeitsthema_xsat.html gesendet. 127.0.0.1:1365, GET /aushaenge/981210_diplomarbeitsthema_vpn.html 127.0.0.1:1365, y:\http/aushaenge/981210_diplomarbeitsthema_vpn.html gesendet. 127.0.0.1:1366, GET /aushaenge/981210_diplomarbeitsthema_einfuehrung_von_e- Commerce.html 127.0.0.1:1366, y:\http/aushaenge/981210_diplomarbeitsthema_einfuehrung_von_e- Commerce.html gesendet. (... einige Zeilen gelöscht...) 127.0.0.1:1378, y:\http/codeddrag/download_e.htm gesendet. 127.0.0.1:1379, GET /codeddrag/cd2102ee.exe 127.0.0.1:1379, y:\http/codeddrag/cd2102ee.exe gesendet. Seite 20 von 20