вторник, 7 февраля 2017 г.

Node.js - HTTP, TCP Socket, UDP server and client

HTTP server

var http = require('http');

var server = http.createServer(function (request, response) {
    response.writeHead(200, 'OK', {'Content-Type': 'text/html'});
    response.write('Hello, ');
    response.end('World!');
});

server.listen(8124, '127.0.0.1', function () {
    console.log('server is listening on 127.0.0.1:8124');
});

HTTP client

var http = require('http');

var client = http.request({host: '127.0.0.1', port: 8124}, function (response) {
    var data = '';
    response.on('data', function (chunk) {
        data += chunk;
    });
    response.on('end', function () {
       console.log(data);
    });
});

client.end();

TCP Socket server

var net = require('net');

var PORT = 8124;

// Создание сервера и прослушивание соединения сервера с клиентом
var server = net.createServer(function (connection) {
    console.log('connected');
    // Можно получать строки или буфер
    connection.on('data', function (data) {
        console.log(data + ' from client address ' + connection.remoteAddress + ' and port ' + connection.remotePort);
        connection.write('Repeating to client: ' + data);
    });
    connection.on('close', function () {
        console.log('client closed connection');
    });
}).listen(PORT);

server.on('listening', function () {
    console.log('server is listening on ' + PORT);
});

server.on('error', function (error) {
    if (error.code == 'EADDRINUSE') {
        console.warn('Address in use, retrying...');
        setTimeout(function () {
            server.close();
            server.listen(PORT);
        }, 1000);
    } else {
        console.error(error);
    }
});

TCP Socket client

var net = require('net');

var client = new net.Socket();

client.setEncoding('utf8');

// Подключение к серверу
client.connect('8124', '127.0.0.1', function () {
    console.log('connected to server');
    // Можно отправлять строки или буфер
    client.write('Enter text, that client will send to server, and press "Enter".');
});

// Полученные данные из консоли командной строки отправляются серверу
process.stdin.on('data', function (data) {
    client.write(data);
});

// Возвращаемые данные от сервера выводятся на консоль командной строки
client.on('data', function (data) {
    console.log(data);
});

// При закрытии соединения с сервером выводим сообщение
client.on('close', function() {
    console.log('connection closed');
});

UDP server

var dgram = require('dgram');

var server = dgram.createSocket('udp4');

server.on('listening', function () {
    var address = server.address();
    console.log('server is listening at ' + address.address + ':' + address.port);
});

server.on('message', function (message, rinfo) {
    console.log('server got: ' + message + ' from client ' + rinfo.address + ':' + rinfo.port);
});

server.on('error', function (error) {
    console.log('server error:' + error.stack);
    server.close();
});

server.bind(8124, '127.0.0.1', function () {
    console.log('server is listening on 127.0.0.1:8124');
});

UDP client

var dgram = require('dgram');

var client = dgram.createSocket('udp4');

client.on('close', function () {
    process.exit(0);
});

process.stdin.on('data', function (data) {
    console.log(data.toString('utf8'));
    client.send(data, 0, data.length, 8124, '127.0.0.1', function (error, bytes) {
        if (error) {
            console.error('error: ' + error);
        } else {
            console.log('successful');
        }
        client.close();
    });
});

Комментариев нет:

Отправить комментарий