package javacodebook.net.socket.simpleserver; import java.io.*; import java.net.*; /** * Dieses Program empfängt eine über TCP gesendete Nachricht, falls * diese dem String "datum" entspricht, wird dem Sender das Datum * übermittelt, sonst bekommt er eine Fehlermeldung. */ public class TCPServer { public static void main(String args[]) { try { // Ein ServerSocket wird auf Port 5000 angemeldet ServerSocket servSock = new ServerSocket(5000); System.out.println("Warte auf Verbindung..."); // Durch accept() wird der Server in Warteposition gebracht. In // dieser Methode verweilt er, bis ein Client auf diesem Port ein // Request abgibt. erst dann wird das Socket Objekt, welches eine // Repräsentation des Clients darstellt, zurückgegeben. Socket client = servSock.accept(); // getInetAddress() liefert die IP-Addresse des Clients System.out.println("Client verbunden von " + client.getInetAddress()); // Der InputStream vom Socket wird referenziert, und an einen // BufferedReader weitergeleitet. So können Client-Meldungen // leicht ausgelesen werden. BufferedReader clientIn = new BufferedReader( new InputStreamReader(client.getInputStream())); // Ein PrintWriter leitet sämtliche Eingaben, an den // Outputstream des Clients weiter. Über Ihn können komfortabel // Meldungen an den Client übertragen werden. PrintWriter clientOut = new PrintWriter( client.getOutputStream(),true); // Zeile vom Client wird ausgelesen. String input = clientIn.readLine(); // Falls die Zeile dem String "datum" entspricht wird dem Client // das Datum übermittelt, sonst bekommt er eine Fehler Meldung. if(input.equals("date")) { clientOut.print("Hallo "+client.getInetAddress()); clientOut.println(". Das Datum im Java Format: " + new java.util.Date()); } else { clientOut.println("Sorry, "+input+" ist falscher Befehl!"); } } catch(Exception e) { System.out.println("Netzfehler!"); } } }