Vorwort:
Ich weiß nicht, ob meine Überschrift vielsagend ist, ich weiß aber auch nicht, wie ich das Problem zusammenfassen kann.
Auch wenn ich von Sockets schreibe, hat es wohl eher etwas mit Grundlegendem zu tun, weshalb ich hier im Anfängerforum bin.
Ich habe schon im Internet gesucht, aber wahrscheinlich mit falschen Stichwörtern, auf jeden Fall habe ich noch nichts Hilfreiches gefunden...
Programm:
Das Programm, das ich schreibe ist dafür da, um auf 2 PCs jeweils einen Ordner zu vergleichen, sodass am Ende in beiden Ordern jeweils die neuesten Dateien stehen. Dies passiert über einen ServerSocket auf dem einen und einem Socket auf dem anderen PC.
Problem:
Ich möchte testweise nur ein Bild übertragen. Dieses lese ich mit einem BufferedInputStream ein und übertrage es über den OutputStream des Sockets. Auf der anderen Seite lese ich es nun mit dem InputStream des Sockets ein und schreibe es mit einem BufferedOutputStream in die Datei auf dem anderen Server.
Doch wie kann ich das Signal übertragen, dass die Datei jetzt fertig übertragen wurde und es auf zur nächsten geht? Bei normalen Textdateien habe ich einfach als Endsignal das byte 0 übertragen, welches in den Textdateien ja normalerweise nicht benutzt wird. (Komischerweise kam beim anderen PC 255 anstatt der 0
, aber das ist ja nicht mein Problem
)
Ich denke, dass es am einfachsten wäre, wenn ich die -1 übertragen könnte, als EOS signal und dann weiter zur nächsten Datei gehe. Doch wenn ich einfach -1 schreibe, kommt bei manchen Streams das bekannte ? aber als (int)63 an, bei anderes (z.B. dem normalen OS) wird es einfach ignoriert, da es nicht zwischen 0 und 128 liegt und auch nicht das normale EOS vorhanden ist.
Über diesen OS schreibe ich danach aber direkt weiter, weswegen ich ihn nicht schließen möchte. Als ich probiert habe diesen zu schließen, wurde iwie gleich der socket geclosed... Die erste Datei wurde Fehlerfrei übertragen (das Bild) aber die Verbindung war halt weg.
Frage:
Kann man auch ohne einen OS zu closen ein EOS-Signal senden?
Ich weiß nicht, ob meine Überschrift vielsagend ist, ich weiß aber auch nicht, wie ich das Problem zusammenfassen kann.
Auch wenn ich von Sockets schreibe, hat es wohl eher etwas mit Grundlegendem zu tun, weshalb ich hier im Anfängerforum bin.
Ich habe schon im Internet gesucht, aber wahrscheinlich mit falschen Stichwörtern, auf jeden Fall habe ich noch nichts Hilfreiches gefunden...
Programm:
Das Programm, das ich schreibe ist dafür da, um auf 2 PCs jeweils einen Ordner zu vergleichen, sodass am Ende in beiden Ordern jeweils die neuesten Dateien stehen. Dies passiert über einen ServerSocket auf dem einen und einem Socket auf dem anderen PC.
Problem:
Ich möchte testweise nur ein Bild übertragen. Dieses lese ich mit einem BufferedInputStream ein und übertrage es über den OutputStream des Sockets. Auf der anderen Seite lese ich es nun mit dem InputStream des Sockets ein und schreibe es mit einem BufferedOutputStream in die Datei auf dem anderen Server.
Doch wie kann ich das Signal übertragen, dass die Datei jetzt fertig übertragen wurde und es auf zur nächsten geht? Bei normalen Textdateien habe ich einfach als Endsignal das byte 0 übertragen, welches in den Textdateien ja normalerweise nicht benutzt wird. (Komischerweise kam beim anderen PC 255 anstatt der 0
Ich denke, dass es am einfachsten wäre, wenn ich die -1 übertragen könnte, als EOS signal und dann weiter zur nächsten Datei gehe. Doch wenn ich einfach -1 schreibe, kommt bei manchen Streams das bekannte ? aber als (int)63 an, bei anderes (z.B. dem normalen OS) wird es einfach ignoriert, da es nicht zwischen 0 und 128 liegt und auch nicht das normale EOS vorhanden ist.
Über diesen OS schreibe ich danach aber direkt weiter, weswegen ich ihn nicht schließen möchte. Als ich probiert habe diesen zu schließen, wurde iwie gleich der socket geclosed... Die erste Datei wurde Fehlerfrei übertragen (das Bild) aber die Verbindung war halt weg.
Frage:
Kann man auch ohne einen OS zu closen ein EOS-Signal senden?