001package var.sockets.tcp.time;
002
003import java.io.InputStream;
004import java.net.Socket;
005import java.text.DateFormat;
006import java.text.ParseException;
007import java.util.Date;
008
009/**
010 * Client for echo var.sockets.tcp.time.Time*Server service. Verbindet sich mit
011 * dem Server und empfängt eine Repräsentation eines Zeitstempels. Das Format
012 * des Zeitstempels kann entweder die Zeit in ms seit dem 01.01.1970 00:00:00
013 * GMT als ASCII-Zeichen sein oder ein String, der die Zeit kompatibel zu ISO
014 * 8601 enthält.
015 *
016 * @author Sandro Leuchter
017 *
018 */
019public class TimeClient {
020
021        /**
022         * main method: entrypoint to run
023         *
024         * @param args address of service to connect to (must be String[0]: host
025         *             (IP-address or DNS hostname), String[1]: port)
026         *
027         */
028        public static void main(String[] args) {
029                try (Socket socket = new Socket(args[0], Integer.parseInt(args[1])); InputStream in = socket.getInputStream()) {
030                        StringBuilder stringBuilder = new StringBuilder();
031
032                        int c;
033                        while ((c = in.read()) != -1) {
034                                stringBuilder.append((char) c);
035                        }
036
037                        // stringBuilder-Inhalt in ein Date-Objekt konvertieren und ausgeben
038                        DateFormat dateFormatter = DateFormat.getInstance();
039                        Date date = null;
040                        try {
041                                date = dateFormatter.parse(stringBuilder.toString());
042                        } catch (ParseException parseException) {
043                                try {
044                                        date = new Date(Long.parseLong(stringBuilder.toString()));
045                                } catch (NumberFormatException numberException) {
046                                        // weder verständliches Textformat, noch long-Zahl (ms. seit
047                                        // 01.01.1970 00:00)
048                                        // System.err.println(numberException);
049                                }
050                        }
051                        System.out.println("empfangen: \"" + stringBuilder.toString() + "\"");
052                        if (date != null) {
053                                System.out.println("gewandelt: " + date);
054                        } else {
055                                // weder verständliches Textformat, noch long-Zahl (ms. seit
056                                // 01.01.1970 00:00)
057                                System.err.println("es war nicht mögich ein Date-Objekt daraus zu erzeugen.");
058                        }
059                } catch (Exception e) {
060                        System.err.println(e);
061                }
062        }
063}