S
Stiewen
Gast
Aloa he!
Ich habe ein Problem mit der Dateiversendung in einem lokalen Netzwerk!
Hier mein Source bisher:
Sender:
Server:
Prob: ich bekomm, wenn ich zB. ein Bild sende immer nur einen Teil von dem Bild perfekt an und den Rest mit anderen Farben oder gar nicht...
Sollte ich bei dieser Übertragung bleiben oder auf DatagrammSockets über gehen, von denen ich noch keinen blassen Dunst habe und somit um ein kleines Beispiel bitten würde, wenn dies notwendig ist.
Danke, Stiewen
Ich habe ein Problem mit der Dateiversendung in einem lokalen Netzwerk!
Hier mein Source bisher:
Sender:
Code:
public void run ( ) {
try {
FileInputStream fisIn = new FileInputStream(strFile);
OutputStream osOut = soClient.getOutputStream();
File fi = new File(strFile);
int intTemp;
longFileSizeLeft = fi.length();
longMaxBuffer = Long.parseLong(strFileLength);
byte[] b = getBuffer();
while ( fisIn.read(b) != 0 ) {
osOut.write(b);
osOut.flush();
// BufferSize von der Restgroesse der Data abziehen
longFileSizeLeft -= b.length;
// neuen Buffer anlegen
b = getBuffer();
jpbTransfered.setValue(intProcess++);
jlbInfo.setText("Transfered: " + (intProcess / 1024) + " kB/ " + (Integer.parseInt(strFileLength) / 1024) + " kB");
}
fisIn.close();
jbuStatus.setText("Sender OK");
} catch ( IOException ioe ) {
}
}
public byte[] getBuffer ( ) {
if ( longFileSizeLeft >= longMaxBuffer ) {
return new byte[(int)longMaxBuffer];
} else {
return new byte[(int)longFileSizeLeft];
}
}
Code:
public void run ( ) {
try {
InputStream isIn = soClient.getInputStream();
OutputStream osOut = new FileOutputStream(database.strHomeDir + strFile);
longFileSizeLeft = Long.parseLong(strFileLength);
longMaxBuffer = Long.parseLong(strFileLength);
int intTemp;
byte[] b = getBuffer();
while ( isIn.read(b) != 0 ) {
osOut.write( b );
osOut.flush();
// BufferSize von der Restgroesse der Data abziehen
longFileSizeLeft -= b.length;
// neuen Buffer anlegen
b = getBuffer();
jpbTransfered.setValue(b.length);
jlbInfo.setText("Transfered: " + (b.length / 1024) + " kB/ " + (Integer.parseInt(strFileLength) / 1024) + " kB");
}
osOut.close();
jbuStatus.setText("Server OK");
} catch ( IOException ioe ) {
}
}
public byte[] getBuffer ( ) {
if ( longFileSizeLeft >= longMaxBuffer ) {
return new byte[(int)longMaxBuffer];
} else {
return new byte[(int)longFileSizeLeft];
}
}
Prob: ich bekomm, wenn ich zB. ein Bild sende immer nur einen Teil von dem Bild perfekt an und den Rest mit anderen Farben oder gar nicht...
Sollte ich bei dieser Übertragung bleiben oder auf DatagrammSockets über gehen, von denen ich noch keinen blassen Dunst habe und somit um ein kleines Beispiel bitten würde, wenn dies notwendig ist.
Danke, Stiewen