Nu gör jag så att jag skickar 256 bytes i taget så det går hyffsat snabbt, men det har uppstått ett litet problem.
Om jag skickar vanliga textfiler så går det jättebra och alla tecken stämmer, men om jag skickar t.ex. en exefil så blir det inte lika bra för de innehåller lite konstiga tecken. Dessa konstiga tecken blir biljardbollar med olika nummer om man använder Wingdings som teckensnitt (så här med Arial ).
Problemet är när jag läser in filen. Då returnerar srcstream.read() 65535 i stället för ett giltigt ascii-värde vilket inte är så bra. srcstream är en FileReader.
Nån som har nån ide?
Fel av mig verkar det som. Efter att tittat lite närmare på de där konstiga tecknen så visar det sig att de faktis har värdet 65533 i detta fall och att det är ett tecken. Är det sånt där Unicode eller?
Men då är det nya problemet när jag skickar och läser dessa tecken. Nån stans på vägen så blir det fel och värdet på den emottagna tecknet blir 63='?'.
Jag skickar med en PrintWriter och tar emot med en BufferedReader.
Vi håller på med ett exarbete som bl.a. sysslar med filöverföring. Vi har gjort så här (med viss modification):
/* --- Send File --- */
File filnamn = new File("Linux.pdf");
byte c[] = new byte[4096];
int read;
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(filnamn));
BufferedOutputStream bos = new BufferedOutputStream(us.getOutputStream());
/* --- Close shop --- */
bos.flush();
bis.close();
bos.close();
us.close(); /* User Socket */
/* --- End Send File --- */
/* ---- Receive File ---- */
File filnamn = new File("LinuxCpy.pdf");
byte c[] = new byte[4096];
int read;
BufferedInputStream bis = new BufferedInputStream(socket.getInputStream());
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(filnamn));