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}