String von Server auslesen und interpretieren

DarkUtopia

Mitglied
hallo leute,
ich studiere auf der TU Wien und habe nun programmieren.

ich habe ein problem momentan und zwar:

ich hab ein programm bekommen das einen server startet auf meinem rechner der dd:MM:yyyy:HH:mm:ss
das ausgibt

und ich soll diesen string oder die zeichenkette (ich weiß nicht wie ich es nennen soll) in ein vormat bringen wie

Es ist der 12.11.2010 und es ist 23:25.

ja ich weiß nicht wie ich das machen soll?
vielleicht ein array mit 14 stellen und jede ziffer einzeln ausgeben und dann halt sie in dem format ausgeben?
und wie rufe ich den server auf bzw. benutze ihm?

da ist der code des servers

Java:
import java.io.IOException;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.text.SimpleDateFormat;

public class TimeServer {

	public TimeServer() throws Exception {
		ServerSocket s = null;
		try {
			s = new ServerSocket(6667);
			System.out.println("Server running on 6667...");
		} catch (java.net.BindException e) {
			System.err
					.println("Can't start server. Port already in use.\nClose the previously running server to free the Port again.");
		}
		while (true) {
			try {
				Socket client = s.accept();
				TimeThread c = new TimeThread(client);
				c.start();
			} catch (java.lang.NullPointerException e) {
				System.err.println("Exiting...");
				break;
			}
		}
	}

	public static void main(String args[]) throws Exception {
		@SuppressWarnings("unused")
		TimeServer server = new TimeServer();

	}
}

class TimeThread extends Thread {
	private Socket outputS;

	public TimeThread(Socket s) {
		outputS = s;
	}

	public void run() {
		try {
			PrintWriter pout = new PrintWriter(outputS.getOutputStream(), true);
			SimpleDateFormat format = new SimpleDateFormat(
					"dd:MM:yyyy:HH:mm:ss");

			pout.println(format.format(new java.util.Date()));
			outputS.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

danke mal im vorraus!!!
 

AmunRa

Gesperrter Benutzer
Den String in ein Date parsen könntest du mit SimpleDateFormat

und ebenfalls mit SimpleDateFormat kannst du ein Date Objekt wieder in einen String wandeln der ein spezielles format hat, vl hilft dir das.
 
S

SlaterB

Gast
wie man sich zu einem Server verbindet solltest du gelehrt bekommen haben wenn du so eine Aufgabe lösen musst,
ansonsten google-Suche 'java socket client example'

beim Datum-Interpretieren wäre der Einsatz von SimpleDateFormat geschickt,
mit dem gleichen Format vom Server kannst du den String zu einem Date parsen,
dann das Date wieder formatieren mit einem Format "Es ist der dd.mm.yyyy und es ist xxirgendwas."
 

DarkUtopia

Mitglied
ja leider ist unsere vorlesung zum sch*****

und leider heißts es gibt eh einen link zu nem java online buch....
naja

ich werd das mal versuchen
 

Michael...

Top Contributor
Schau mal in die run() des Serverthreads, da siehst Du wie das aktuelle Datum in einen String gewandelt wird. Du musst jetzt einfach nur den Weg zurück. Tipp: Schau mal die Doku zur Klasse SimpleDateFormat an.
 

DarkUtopia

Mitglied
was naja? Du bist Student der TU Wien! Willst du das man dir beibringt wie man einen String zu einem Date parst? Lächerlich... Du bist kein Schüler mehr!

wenn man das brauchen würde was ich studiere dann wäre es auch ok aber ich brauch das sicher nicht mehr.....

aber ich brauch darüber nicht zu disskutieren ich kanns nicht und darum frage ich nach wie ich es angehen soll...

wennsdir nicht passt brauchst jan icht kommenteiren!

und danke an die anderen!
 

Andi_CH

Top Contributor
Wieso auf der clientseite ändern? Der Server soll doch gleich das liefern was wir brauchen?
Java:
    public void run() {
        try {
            PrintWriter pout = new PrintWriter(outputS.getOutputStream(), true);
            SimpleDateFormat dateFormat = new SimpleDateFormat("dd:MM:yyyy");
            SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm:ss");
            String timestamp = dateFormat.format(new java.util.Date()) + " und es ist " + timeFormat.format(new java.util.Date());
            pout.println(timestamp);
            outputS.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
 
Zuletzt bearbeitet:

DarkUtopia

Mitglied
also wenn ich die angabe verstanden habe, liefert der server schon diesen datums string,

und ich muss mich dort drauf connecten und das auslesen und dann halt ausgeben
 
S

SlaterB

Gast
2x new java.util.Date() in derselben Zeile ist ja nicht gerade schön und mit etwas Pech sind das zwei verschiedene Tage
wenn genau um Mitternacht ausgeführt ;)
 

DarkUtopia

Mitglied
ich verstehe die antwort gerade nicht.

den source code den ich amanfang gepostet habe soll ich ausführen und an dem nichts verändern, und dann soll ich per eigener class auf den server den ich da starte zugreifen und den datums string auslesen und wieder verwenden..weiß nicht so recht was ich mit dem obrigen source code anfangen soll
 
S

SlaterB

Gast
@DarkUtopia
als erstes brauchst du ein separates Programm welches vom (laufenden) Server liest, siehe meinen google-Suche-Vorschlag
 

Andi_CH

Top Contributor
2x new java.util.Date() in derselben Zeile ist ja nicht gerade schön und mit etwas Pech sind das zwei verschiedene Tage
wenn genau um Mitternacht ausgeführt ;)

Ja das war mir auch klar, aber mir ist keine besser Lösung eingefallen

"dd:MM:yyyy und es ist HH:mm:ss" klappt nicht - das war der erste Versuch

applyPattern(String pattern) dürfte besser sein ...


FLÜSTER: ich wüsste übrigens auch nicht wie ich den server connecten soll (ist VIEL zu lange her ;-) ), aber ich hab auch nicht nach einer Lösung gesucht
 
S

SlaterB

Gast
Java:
SimpleDateFormat dateFormat = new SimpleDateFormat("dd:MM:yyyy' und es ist 'HH:mm:ss");
wäre das dann, ich meinte aber eher eine naheliegende universelle Lösung:

Java:
Date date = new Date();
String timestamp = dateFormat.format(date) + " und es ist " + timeFormat.format(date);
schon kann der Fehler gar nicht mehr auftreten
 

Neue Themen


Oben