-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathReceiver.java
More file actions
88 lines (70 loc) · 3.17 KB
/
Receiver.java
File metadata and controls
88 lines (70 loc) · 3.17 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
public class Receiver {
public static void main(String[] args) {
try {
run(args);
} catch (Exception e) {
e.printStackTrace();
}
}
private static Boolean running = true;
private static ServerSocket server;
public static void setRunning(Boolean status) {
Receiver.running = status;
}
public static void run(String[] arg) throws Exception {
System.out.println("[Server] Starting Receiver.java");
// final long client_pid = Long.parseLong(args[0]);
Receiver.server = new ServerSocket(2023);
System.out.println("[Server] A server is open: " + server.toString());
// while (ProcessHandle.of(client_pid).isPresent()) {
while (running) {
// IDEA : checker le statut de l'appli client
try {
Socket socket = server.accept();
IOMesssageHandler iomHandler = new IOMesssageHandler();
iomHandler.setDebug(true);
iomHandler.printDebug("Connexion reçue " + socket.toString());
InputStream input = socket.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(input));
OutputStream output = socket.getOutputStream();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(output));
ArrayList<String> entry = new ArrayList<String>();// reader.readLine();
String line = "";
FileOutputStream fosLog = new FileOutputStream("messages.log", true);
OutputStreamWriter oswLog = new OutputStreamWriter(fosLog);
BufferedWriter bwLog = new BufferedWriter(oswLog);
// Tant que la saisie n'est pas "stop", on l'affiche
while ((line = reader.readLine()) != null) { // && !entry.equals("$/stop")
entry.add(line);
iomHandler.printDebug("Ligne reçue : " + line);
}
iomHandler.printDebug("Fin de reception : " + entry.size() + " message(s) réceptionné(s)");
if (entry.size() != 4) {
writer.write("Erreur récéption: nombre d'arguments incorrect");
System.out.println("Erreur récéption: nombre d'arguments incorrect");
} else {
iomHandler.printDebug("Décodage en cours...");
String result = iomHandler.decode(entry);
writer.write(result);
bwLog.write(result);
bwLog.newLine();
bwLog.flush();
System.out.println(result);
}
writer.flush();
writer.close();
output.close();
socket.close();
bwLog.close();
} catch (Exception e) {
System.out.println("[Receiver Exception Catched] : " + e);
}
}
System.out.println("[Server] Client down, closing server...");
server.close();
}
}