lunes, 6 de marzo de 2017

 

Servidor TCP con Javascript

 

NodeJS

Node.js® es un entorno de ejecución para JavaScript construido con el motor de JavaScript V8 de Chrome. Node.js usa un modelo de operaciones E/S sin bloqueo y orientado a eventos, que lo hace liviano y eficiente https://nodejs.org/es/

Protocolo TCP

Transmission Control Protocol (TCP) o Protocolo de Control de Transmisión, es uno de los protocolos fundamentales en Internet.
https://es.wikipedia.org

Sockets TCP

Los sockets son una forma de comunicación entre procesos que se encuentran en diferentes máquinas de una red, los sockets proporcionan un punto de comunicación por el cual se puede enviar o recibir información entre procesos.
https://es.wikipedia.org

Netcat

Netcat es una herramienta de red que permite a través de intérprete de comandos y con una sintaxis sencilla abrir puertos TCP/UDP en un HOST
https://es.wikipedia.org/wiki/Netcat

Codigo JS

//llamamos al modulo net
var net = require("net");
//array donde almacenamos los socket
var clients = [];

var server = net.createServer((socket) => {
    
    //obtendremos datos del socket instanceado
    socket.name = "ip: " + socket.remoteAddress + " puerto: " + socket.remotePort

    //añadimos un socket a un array con el metodo push();
    clients.push(socket);

    //EventEmitter (data) => se activa cuando el socket esta enviando un dato
    socket.on("data", function(data){
        broadcast(socket.name + "--> " + data, socket);
    })

    function broadcast(message, sender) {
      clients.forEach(function (client) {

        if (client === sender){
          //si el mensaje es escrito por el mismo no se le envia el mensaje
          return
        };
          //el mensaje se le envia a otro socket registrado previamente en el array cliente;
        client.write(message);

      });
      //envia el mensaje al servidor
      process.stdout.write(message)

    }

    //EventEmitter (end) => detecta el fin de una coneccion con un socket
    socket.on("end", function(){
      console.log(socket.name + "--> " + "se salio del chat");
    });
})
//detectar error
server.on('error', (err) => {
  throw err;
});
//puerto por donde va escuchar y atender peticiones
server.listen(8000,() => {
  console.log("servidor tcp escuchando en el puerto " + server.address().port);
});

Ejecutarlo

Instalar nodejs luego instalar netcat para windows (en mac ya viene instalado)

En el terminal o consola 

Servidor.

     > node [nombre del archivo]
        ejm: node serverTcp.js

 Cliente.

     > nc [ip del servidor] [puerto del servidor]
         ejm: nc 127.0.0.1 8000

1 comentario:

  1. Se hizo esperar, pero ya está publicado el artículo. Espero que haya más.

    Gracias.

    ResponderEliminar