Hallo Leute, ich habe ein wenig Troubles beim Schreiben eines Netzwerktools:
Anfangs habe ich versucht, Nachrichten als Texte über das Netzwerk zu schicken. Dazu habe ich einen Thread abgeleitet, welcher in einer Endlosschleife die readline Methode des Buffered Readers aufruft und blockiert, bis eine neue Zeile gekommen ist. Sind neue Daten eingelangt, wird ein anderes Objekt asynchron davon benachrichtigt.
while (ok)
{
try
{
String s = m_reader.readLine();
m_owner.dataReceived(s);
}
catch (IOException ioex)
{
ok = false;
m_owner.ConnectionBroken();
}
}
Soweit so gut.
Mit steigender Komplexität fand ich es aber besser, die Daten im XML-Format zu senden und zu empfangen.
Und damit bin ich auch schon beim Problem
Die Daten kann ich den XML-Klassen nur als Stream oder in Form von Files übergeben.
Jede Nachricht als File zu speichern, einzulesen und zu löschen wäre ein Schildbürgerstreich ...
Wenn ich jedoch die Daten mit einem Stream übergebe, kann der Documentbuilder ja nicht wissen, wann alle Daten angekommen und diese zu parsen sind.
DocumentBuilderFactory fabrik = DocumentBuilderFactory.newInstance();
DocumentBuilder aufbau = fabrik.newDocumentBuilder();
Document xmlbaum = aufbau.parse(is);
Mir ist schon klar, dass diese Vorgehensweise bei Files spitze funktioniert, aber mir ist schleierhaft, wie das über das Netzwerk funktionieren soll. Weiss jemand von Euch Rat bzw. hat jemand dazu Code Snippets, oä?
Anfangs habe ich versucht, Nachrichten als Texte über das Netzwerk zu schicken. Dazu habe ich einen Thread abgeleitet, welcher in einer Endlosschleife die readline Methode des Buffered Readers aufruft und blockiert, bis eine neue Zeile gekommen ist. Sind neue Daten eingelangt, wird ein anderes Objekt asynchron davon benachrichtigt.
while (ok)
{
try
{
String s = m_reader.readLine();
m_owner.dataReceived(s);
}
catch (IOException ioex)
{
ok = false;
m_owner.ConnectionBroken();
}
}
Soweit so gut.
Mit steigender Komplexität fand ich es aber besser, die Daten im XML-Format zu senden und zu empfangen.
Und damit bin ich auch schon beim Problem

Die Daten kann ich den XML-Klassen nur als Stream oder in Form von Files übergeben.
Jede Nachricht als File zu speichern, einzulesen und zu löschen wäre ein Schildbürgerstreich ...
Wenn ich jedoch die Daten mit einem Stream übergebe, kann der Documentbuilder ja nicht wissen, wann alle Daten angekommen und diese zu parsen sind.
DocumentBuilderFactory fabrik = DocumentBuilderFactory.newInstance();
DocumentBuilder aufbau = fabrik.newDocumentBuilder();
Document xmlbaum = aufbau.parse(is);
Mir ist schon klar, dass diese Vorgehensweise bei Files spitze funktioniert, aber mir ist schleierhaft, wie das über das Netzwerk funktionieren soll. Weiss jemand von Euch Rat bzw. hat jemand dazu Code Snippets, oä?