103 lines
2.3 KiB
JavaScript
103 lines
2.3 KiB
JavaScript
var net = require('net');
|
|
|
|
var HOST = '127.0.0.1'; // On écoute sur toutes les interfaces
|
|
var PORT = 3333;
|
|
|
|
var server = net.createServer();
|
|
|
|
server.on('connection', onClientConnection);
|
|
server.on('listening', onListening);
|
|
server.on('error', onError);
|
|
|
|
server.listen(PORT, HOST);
|
|
|
|
function onClientConnection(client) {
|
|
|
|
var accumulator = 0;
|
|
|
|
console.log('Nouveau client depuis %s:%s', client.remoteAddress, client.remotePort);
|
|
|
|
// On souhaite commencer à récupérer les données
|
|
// provenant de ce nouveau client
|
|
client.on('data', onClientData);
|
|
client.on('close', onClientClose);
|
|
|
|
function onClientData(data) {
|
|
|
|
console.log('Données reçues de %s:%s: "%s"', client.remoteAddress, client.remotePort, data);
|
|
|
|
var messages = data.toString('utf8').split('\n');
|
|
|
|
for(var i = 0; i < messages.length; i++) {
|
|
|
|
var line = messages[i];
|
|
var tokens = line.split(' ');
|
|
|
|
if (tokens.length !== 1 && tokens.length !== 2) {
|
|
client.write('invalid message');
|
|
continue
|
|
}
|
|
|
|
var command = tokens[0];
|
|
|
|
var arg;
|
|
if (tokens.length === 2) {
|
|
try {
|
|
arg = parseFloat(tokens[1]);
|
|
} catch(err) {
|
|
client.write('invalid message\n');
|
|
continue
|
|
}
|
|
}
|
|
|
|
console.log("Tokens", tokens);
|
|
|
|
switch(command) {
|
|
case "add":
|
|
accumulator = accumulator + arg;
|
|
client.write(accumulator+'\n');
|
|
break;
|
|
case "sub":
|
|
accumulator = accumulator - arg;
|
|
client.write(accumulator+'\n');
|
|
break;
|
|
case "div":
|
|
accumulator = accumulator / arg;
|
|
client.write(accumulator+'\n');
|
|
break;
|
|
case "mul":
|
|
accumulator = accumulator * arg;
|
|
client.write(accumulator+'\n');
|
|
break;
|
|
case "status":
|
|
client.write(accumulator+'\n');
|
|
break;
|
|
case "reset":
|
|
accumulator = 0;
|
|
client.write(accumulator+'\n');
|
|
break;
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
function onClientClose() {
|
|
console.log('Le client %s:%s s\'est déconnecté.', client.remoteAddress, client.remotePort);
|
|
}
|
|
|
|
}
|
|
|
|
function onListening() {
|
|
console.log("Serveur en écoute sur %s:%s", HOST, PORT)
|
|
}
|
|
|
|
function onError(err) {
|
|
console.log('Une erreur a été soulevée: %s', err);
|
|
process.exit(1);
|
|
}
|