TCP/IP Programmierung C# TimeServer Java6 TimeClient Stand 19.10.11 21:24:32 Seite 1 von 16
Inhaltsverzeichnis Erläuterung...3 Software...3 C#TimeServer...4 Klasse ServerThread...6 Starten und Beenden...7 Veröffentlichen des Projekts...7 Java6TimeClient...9 Klasse JavaTimeClient...12 Testen...13 Exportieren des Projektes...14 Starten der Exportierten JAR Datei...15 Stand 19.10.11 21:24:32 Seite 2 von 16
Erläuterung Dieses Dokument soll erklären wie man unter C# einen TimeServer erstellt und diesen unter Java6 ausliest. Software Für die Entwicklung des C#TimeServers habe ich die Anwendung Microsoft Visual C# 2010 Express welche unter folgendem Link bezogen werden kann http://www.microsoft.com/visualstudio/en-us/products/2010-editions/express verwendet, für die Entwicklung des Java6 Codes wurde Eclpise 3.5 verwendet welche unter folgendem Link bezogen werden kann http://www.eclipse.org. Stand 19.10.11 21:24:32 Seite 3 von 16
C#TimeServer Nach dem Starten der Anwendung sollte folgender Aufbau sichtbar sein. Abbildung 1: Anwendung Microsoft Visual C# 2010 Express Wählen Sie hier Neues Projekt... und erstellen eine Neue Konsolenanwendung. Abbildung 2: Neues Projekt Nach einem Klick auf die Schaltfläche OK wird die Anwendung mit den Standardwerten geladen. Welche Sie als erstes ändern sollten. Stand 19.10.11 21:24:32 Seite 4 von 16
Als erstes betätigen Sie die Schaltfläche Alles Speichern es sollte folgendes Fenster erscheinen. Abbildung 3: Projekt speichern Wo Sie den Namen für das Projekt vergeben (Dieser wird auch der Name der Ausführbaren Datei werden.), den Speicherort und den Projektmappennamen. Nach dem betätigen der Schaltfläche Speichern werden die Änderungen übernommen. Der nachfolgende Code ist von der MSDN Webseite http://msdn.microsoft.com/de-de/library/bb979208.aspx Stand 19.10.11 21:24:32 Seite 5 von 16
Klasse ServerThread using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Collections; using System.Threading; using System.IO; using System.Net.Sockets; using ServerThread; namespace ServerThread { class Program { private static TcpListener listener = null; private static ArrayList threads = new ArrayList(); static void Main(string[] args) { listener = new TcpListener(4711); listener.start(); Thread th = new Thread(new ThreadStart(Run)); th.start(); String cmd = ""; while (!cmd.tolower().equals("stop")) { cmd = Console.ReadLine(); if (!cmd.tolower().equals("stop")) Console.WriteLine("Unbekannter Befehl: " + cmd); th.abort(); for (IEnumerator e = threads.getenumerator(); e.movenext(); ) { ServerThread st = (ServerThread)e.Current; st.stop = true; while (st.running) Thread.Sleep(1000); listener.stop(); public static void Run() { while (true) { TcpClient c = listener.accepttcpclient(); threads.add(new ServerThread(c)); Stand 19.10.11 21:24:32 Seite 6 von 16
Starten und Beenden Stefan Draeger Zum Starten des TimeServers betätigen Sie die Taste F5, es sollte sich nun ein Fenster öffnen Abbildung 4: Konsole wenn Sie den Server beenden möchten Tippen Sie in das Fenster stop ein und bestätigen dieses mit der Entertaste. Veröffentlichen des Projekts Um diesen Projekt als Ausführbare Datei zu erhalten, muss die Anwendung Veröffentlicht werden. Dieses erledigen Sie indem Sie im Menü Projekt den Menüpunkt TimeServer veröffentlichen es sollte folgendes Fenster sichtbar werden : Abbildung 5: Webpublishing- Assistent geben Sie hier nun den Ordner ein wo die Anwendung erstellt werden soll. Und bestätigen Sie diese Auswahl mit der Schaltfläche Fertig stellen. Stand 19.10.11 21:24:32 Seite 7 von 16
Nach dem erstellen der Anwendung sollte sich der Explorer öffnen und folgende Dateien sollten enthalten sein : Abbildung 6: Windows Explorer Nun können Sie das Projekt durch ein doppelklick auf die Datei setup.exe installieren und aus dem Startmenü des Betriebssystem starten. Abbildung 7: Startmenü Stand 19.10.11 21:24:32 Seite 8 von 16
Java6TimeClient Nach dem Starten der Anwendung Eclipse werden Sie aufgefordert ein Workspace zu wählen Abbildung 8: Eclipse Workspace wählen Es wird nun sollten Sie ein neuen Workspace angegeben haben folgendes Fenster sichtbar sein. Abbildung 9: Eclipse Entwicklungs Umgebung Wählen Sie nun aus dem Menü File den Menüpunkt New/Other und wählen Java Project bestätigen Sie diese Auswahl mit der Schaltfläche Next. Abbildung 10: Neues Java Projekt anlegen Stand 19.10.11 21:24:32 Seite 9 von 16
Im folgenden Fenster geben Sie den Project name ein bestätigen Sie die Auswahl mit Finish. Abbildung 11: Java Projekt Einstellungen Folgende Meldung fragt ob Sie die Java Perspektive öffnen möchten dieses können Sie mit dem Klick auf die Schaltfläche OK bestätigen. Abbildung 12: Java Perspektive Stand 19.10.11 21:24:32 Seite 10 von 16
Erstellen Sie nun unter dem Verzeichnis src eine neue Klasse mit File/New/Class, es sollte sich folgendes Fenster öffnen Abbildung 13: Klasse JavaTimeClient erstellen Bestätigen Sie dieses Fenster mit der Schaltfläche Finish. Fügen Sie nun den unten angegeben Code in die Klasse ein. Stand 19.10.11 21:24:32 Seite 11 von 16
Klasse JavaTimeClient import java.io.bufferedreader; import java.io.ioexception; import java.io.inputstreamreader; public class JavaTimeClient { public static void main(string[] args) { JavaTimeClient timeclient = new JavaTimeClient(); try { timeclient.readtime(); catch (IOException e) { e.printstacktrace(); void readtime() throws IOException { String ip = "127.0.0.1"; // localhost int port = 4711; java.net.socket socket = new java.net.socket(ip,port); String recivedtime = readtimefromserver(socket); System.out.println(recivedTime); private String readtimefromserver(java.net.socket socket) throws IOException { BufferedReader bufferedreader = new BufferedReader( new InputStreamReader( socket.getinputstream())); char[] buffer = new char[200]; int anzahlzeichen = bufferedreader.read(buffer, 0, 200); String nachricht = new String(buffer, 0, anzahlzeichen); return nachricht; Stand 19.10.11 21:24:32 Seite 12 von 16
Testen Bevor das Projekt Exportiert wird ist es angebracht dieses zu Testen mit einem Klick auf die Schaltfläche Run JavaTimeClient wird die Konsolenanwendung gestartet. Abbildung 14: Eclipse Konsolenausgabe Sollten Sie hier eine Exception sehen (Ausnahme) so haben Sie unter umständen : die Serveradresse, die IP-Adresse, den Port nicht übereinstimmend eingegeben die C# Konsolenanwendung nicht gestartet Stand 19.10.11 21:24:32 Seite 13 von 16
Exportieren des Projektes Um das Projekt auf anderen Computern zu verwenden muss dieses Exportiert werden, dieses erfolgt über File/Export Abbildung 15: Eclipse Export Wählen Sie aus dem Fenster Java/Runnable JAR file, und bestätigen die Auswahl mit der Schaltfläche Next nun werden Sie aufgeforder die Launch configuration einugeben dazu wählen sie aus der DropdownBox JavaTimeClient-JavaTimeClient und wählen die Export destination aus. Ist dieses geschehen so bestätigen Sie Ihre ausahl mit der Schaltfläche Finish. Stand 19.10.11 21:24:32 Seite 14 von 16
Starten der Exportierten JAR Datei Um die JAR Datei zu starten öffnen Sie die Konsole und navigieren in das Verzeichnis wo die JAR liegt und geben java -jar javatimeclient.jar ein. Es wird vorausgesetzt das die ClasspathVariable JAVA_HOME gesetzt und das BIN Verzeichnis der Path Variable in den Umbegungsvariablen des Betriebssystems hinzugefügt wurden. Stand 19.10.11 21:24:32 Seite 15 von 16
Abbildungsverzeichnis Abbildung 1: Anwendung Microsoft Visual C# 2010 Express...4 Abbildung 2: Neues Projekt...4 Abbildung 3: Projekt speichern...5 Abbildung 4: Konsole...7 Abbildung 5: Webpublishing-Assistent...7 Abbildung 6: Windows Explorer...8 Abbildung 7: Startmenü...8 Abbildung 8: Eclipse Workspace wählen...9 Abbildung 9: Eclipse Entwicklungs Umgebung...9 Abbildung 10: Neues Java Projekt anlegen...9 Abbildung 11: Java Projekt Einstellungen...10 Abbildung 12: Java Perspektive...10 Abbildung 13: Klasse JavaTimeClient erstellen...11 Abbildung 14: Eclipse Konsolenausgabe...13 Abbildung 15: Eclipse Export...14 Stand 19.10.11 21:24:32 Seite 16 von 16