Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Ich habe mich die letzten Tage mit ServerSockets beschäftigt.
Dabei hab ich Strings zwischen Client und Server hin und hergeschickt.
Folgende Klassen hab ich dafür genutzt:
Code:
PrintWriter output = new PrintWriter( new OutputStreamWriter( socket.getOutputStream() ) );
BufferedReader input = new BufferedReader( new InputStreamReader( socket.getInputStream() ) );
Das hat auch alles gut funtkioniert.
Jetzt will ich Daten im XML Format in eine Datei packen und diese übers TCP/IP schicken. Angekommen soll diese Datei dann wieder ausgelesen werden.
Bräuchte eine grobe Hilfe mit welchen Klassen ich da am besten arbeite, vorallem bei den Streams weiss ich nicht welche ich da nutzen muss. XML Verarbeitung und sonstige ServerSocket Geschichten sind mir eigentlich klar.
Warum willst du das in XML-Format umwandeln, und was hat "Datei" als zwischenschritt in dieser Kette verloren? Wenn das über Sockets geht, kannst du doch direkt die Objekte serealisieren, rüberschicken, und auf der anderen Seite 1:1 wieder genauso herstellen, da brauchst du kein xml dazwischen, oder wozu das alles ???:L
"Datei" war ein schlechter Ausdruck. Eher XML Streams.
Und warum das ganze??? Alles nur eine Übung um mich mit XML in Verbindung mit Socjkets vertraut zu machen.
Ich will einen XML Stream vom Client zum Server schicken. Der Server soll ihn emfangen, verarbeiten und einen neuen XML Stream zum Client zurückschicken. Aus irgendeinem Grund läuft die VErbindugn aber nur in eine Richtung. Also ich kann nur schicken und empfangen. Danach, wenn ich zurückschicken will, komtm die Meldung dass die Socketverbindung nichtmehr existiert. Ich versteh aber nicht warum.
Hier mal der Code:
Server: Methode wird bei Request aufgerufen:
Code:
private void request(Socket socket) throws IOException, ParserConfigurationException, SAXException {
InputStream input = socket.getInputStream();
OutputStream output = socket.getOutputStream();
// Inputstream
DocumentBuilderFactory inputFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder inputBuilder = inputFactory.newDocumentBuilder();
Document inputDocument = inputBuilder.parse(input);
Element mainInputElement = inputDocument.getDocumentElement();
Element inputElement = (Element)mainInputElement.getElementsByTagName("ID").item(0);
System.out.println(inputElement.getFirstChild().getNodeValue());
input.close();
// Outputstream
DocumentBuilderFactory outputFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder outputBuilder = outputFactory.newDocumentBuilder();
Document outputDocument = outputBuilder.newDocument();
Element mainElement = outputDocument.createElement("Message");
outputDocument.appendChild(mainElement);
Element element = null;
Text text = null;
element = outputDocument.createElement("ID");
mainElement.appendChild(element);
text = outputDocument.createTextNode("Test");
element.appendChild(text);
OutputFormat format = new OutputFormat(outputDocument);
format.setIndenting(true);
XMLSerializer serializer = new XMLSerializer( output, format );
serializer.serialize(outputDocument);
output.flush();
output.close();
socket.close();
}
Die Methode des Clients sieht genau gleich aus, nur dass ich zu Beginn noch ein "Socket socket = new Socket( SERVERIP, Integer.valueOf(PORT) ); hab und dass Input und Output verdreht sind.
Ich hoffe, dass mir jemand helfen kann, weil ich schon sehr lange an dem Thema rummache. Wenn ich Strigns über Socket schicke, dann ist das alles kein Problem. Aber mit dem XML schließt er mir immer ide VErbindung und ich bekomm deshalb eine Exception. Evtl. gibt es auch eine bessere Lösung als ich sie gewählt hab.
Warum willst du das in XML-Format umwandeln, und was hat "Datei" als zwischenschritt in dieser Kette verloren? Wenn das über Sockets geht, kannst du doch direkt die Objekte serealisieren, rüberschicken, und auf der anderen Seite 1:1 wieder genauso herstellen, da brauchst du kein xml dazwischen, oder wozu das alles ???:L