Hi,
erstmal Sorry, ich weiss, dass so ziemlich das gleiche Thema in nem andrem Thread diskutiert wird, aber ich würde gerne Wissen wo mein Fehler ist, um sowas dann nicht wieder zu machen.
Ich habe einen Server, der auf Anforderung eine Datei sendet:
und einen Client der die Daten empfängt:
Leider scheint das nicht zu funktionieren (abgesehen davon, dass es uneffektiv sein wird wenn ich jedes Byte einzeln behandle). Irgendwie werden zwar ungefähr genausoviele Bytes übertragen wie die Datei wirklich hat, aber trotzdem ist die Datei irgendwie Fehlerhaft.
Kann mir bitte jemand sagen wo mein Fehler liegt?
Schon mal danke im Vorraus.
edit:
Ich habe festgestellt, dass eine kleinere Datei ankommt. Weil man die Verzeichnissstruktur der Jar-Datei im Paketmanager anschauen kann nehme ich an, dass Daten am Ende fehlen (Vermutung).
Eigentlich mache ich doch bei beidesmal flush(), also wie kann das sein?
erstmal Sorry, ich weiss, dass so ziemlich das gleiche Thema in nem andrem Thread diskutiert wird, aber ich würde gerne Wissen wo mein Fehler ist, um sowas dann nicht wieder zu machen.
Ich habe einen Server, der auf Anforderung eine Datei sendet:
Code:
void sendSSC()
{
try
{
LogManager.logMessage("Sende aktuellen SSC an '" + socke.getInetAddress().getHostName() + "'.", 1);
OutputStream out = socke.getOutputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(getClass().getResourceAsStream("ssc.jar")));
// Hier wird gesendet
int temp;
while( ( temp = reader.read() ) != -1 )
{
out.write( temp );
}
out.flush();
out.close();
reader.close();
socke.close();
LogManager.logMessage("reddisch mit senden des aktuellen SSC an '" + socke.getInetAddress().getHostName() + "'.", 1);
}
catch(Exception e)
{
e.printStackTrace();
LogManager.logMessage("Probleme beim senden des aktuellen SSC an '" + socke.getInetAddress().getHostName() + "'.", 2);
}
}
und einen Client der die Daten empfängt:
Code:
Socket socke = new Socket( settings.get("IP"), 2419 );
PrintStream out = new PrintStream(socke.getOutputStream());
out.println( "ssc" );
BufferedInputStream reader = new BufferedInputStream(socke.getInputStream()));
FileWriter fr = new FileWriter( tempFile );
int temp;
while( ( temp = reader.read() ) != -1 )
{
fr.write( temp );
}
fr.flush();
fr.close();
out.close();
socke.close();
Leider scheint das nicht zu funktionieren (abgesehen davon, dass es uneffektiv sein wird wenn ich jedes Byte einzeln behandle). Irgendwie werden zwar ungefähr genausoviele Bytes übertragen wie die Datei wirklich hat, aber trotzdem ist die Datei irgendwie Fehlerhaft.
Kann mir bitte jemand sagen wo mein Fehler liegt?
Schon mal danke im Vorraus.
edit:
Ich habe festgestellt, dass eine kleinere Datei ankommt. Weil man die Verzeichnissstruktur der Jar-Datei im Paketmanager anschauen kann nehme ich an, dass Daten am Ende fehlen (Vermutung).
Eigentlich mache ich doch bei beidesmal flush(), also wie kann das sein?