commit
0c9f1ccb0d
1
.gitignore
vendored
1
.gitignore
vendored
@ -47,3 +47,4 @@ nb-configuration.xml
|
||||
/cle_prive.jks
|
||||
/src/main/resources/META-INF/resources/
|
||||
/media/
|
||||
/media-ext/
|
||||
|
||||
@ -46,6 +46,7 @@ public class FileSocket {
|
||||
try {
|
||||
if (sessions.containsKey(code)) {
|
||||
FileRecv fileRecv = sessions.get(code);
|
||||
fileRecv.session = session;
|
||||
fileRecv.file = new File(media + "-ext", "record/" + fileRecv.name);
|
||||
fileRecv.fos = new FileOutputStream(fileRecv.file, false);
|
||||
logger.info("Start reception of file: " + fileRecv.file.getAbsolutePath());
|
||||
@ -116,15 +117,39 @@ public class FileSocket {
|
||||
|
||||
@OnMessage
|
||||
public void onMessage(byte[] data, @PathParam("code") String code) {
|
||||
int length = (data[1] << 7) | data[2];
|
||||
|
||||
byte check_sum = 0;
|
||||
for (int j = 3; j < length + 3; j++) {
|
||||
check_sum = (byte) (check_sum ^ data[j]);
|
||||
}
|
||||
// System.out.println(length + " - " + data[1] + " - " + data[0] + " - " + check_sum);
|
||||
|
||||
if (sessions.containsKey(code)) {
|
||||
FileRecv fileRecv = sessions.get(code);
|
||||
|
||||
if (check_sum != data[0]) {
|
||||
fileRecv.session.getAsyncRemote().sendText("Error: Checksum error", result -> {
|
||||
if (result.getException() != null) {
|
||||
logger.error("Unable to send message: " + result.getException());
|
||||
}
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
fileRecv.fos.write(data);
|
||||
fileRecv.fos.write(data, 3, length);
|
||||
} catch (IOException e) {
|
||||
StringWriter errors = new StringWriter();
|
||||
e.printStackTrace(new PrintWriter(errors));
|
||||
logger.error(errors.toString());
|
||||
}
|
||||
|
||||
fileRecv.session.getAsyncRemote().sendText("ok", result -> {
|
||||
if (result.getException() != null) {
|
||||
logger.error("Unable to send message: " + result.getException());
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user