String Array Vector komprimieren und verschicken

may24

Bekanntes Mitglied
Hi zusammen,

Meine Java App durchsucht einige Logfiles und holt sich aus diesen diverse Daten.
Daraus bastel ich ein String Array. Das Ganze wiederholt sich jede Minute.
Die Arrays speichere ich dann in einem Vector.
Das Ganze hat den vorteil das ich schön der Reihe nach die einzelnen Teile wieder auslesen und mir ganz simpel SQL Insert's bauen kann.

Nun soll aber das Ganze an einen entfernten Server (durch's Internet) geschickt werden.
D.h. an einen bestimmten Zeitpukt würde ich eine kopie des Vectors machen, diesen Daten dann komprimieren (gzip oder besser bzip2) und verschlüsseln (RSA oder ähnliches).
Dann wird das ganze auf die Reise geschickt, und am anderen Ende geht's den umgekehrten Weg.

Vector<String[]> -> ein Block aus Daten -> komprimieren -> verschlüsseln --> versenden --> entschlüsseln -> dekomprimieren -> Vector<String[]>

Nun die Frage wie mache ich das ?
In C kann ich einfach behaupten der Speicherbereich von A bis B ist mein Objekt und jetzt mach ich mal was damit ... egal was ...
Soweit mir bekannt geht das aber in Java nicht.

Kann ich das überhaupt (wie oben beschrieben) machen, oder geht nur der "Umweg" über (z.B.) XML ?
 
Hey,

ein Beispiel wäre, dass du alles, was du versenden willst per geeidneter toString() Methode, oder besser per JSon serialisierst, dann von mir aus mit Base64, oder was auch immer verschlüsselst und per TCP, oder wiederum was auch immer als String an deinen Server schickst, dort wieder entschlüsselst, deserialisierst...

Ansonsten wäre es gut, wenn du deinen bisherigen Code vorzeigen könntest.

Mfg
Sasuke
 
Hm, hab's noch nicht getestet, aber sowas in der Art 😉

Java:
public ObjectOutputStream buildCDataBlock() throws Exception
	{
		while(locked)
		{
			try {
				// if locked by getStats sleep for 1 sec
				// this is just to avoid data to get lost 
				Thread.sleep(1000);
				} 
			catch (InterruptedException e) 
				{
				// TODO Auto-generated catch block
				e.printStackTrace();
				}
			
		}
		snipshot = snapshot;
		newSnapshot();
		
		ObjectOutputStream oos = new ObjectOutputStream(new ByteArrayOutputStream());
		oos.writeObject(snipshot);
		oos.close();
		
		GZIPOutputStream gzipOut = new GZIPOutputStream(new ByteArrayOutputStream());
		ObjectOutputStream objectOut = new ObjectOutputStream(gzipOut);
		objectOut.writeObject(oos);
		objectOut.close();
		
		return objectOut;
		
	}


... wobei "snapshot" der original Vektor ist.
Bis jetzt hab ich nur was in punkto gzip Komprimierung gefunden. Gibt's da nichts mit höherer Komprimierung ?
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben