File server.js
:
'use strict';
var net = require('net');
const PORT = 3000;
var server = net.createServer((conn) => {
console.log('connected');
conn.on('data', (data) => {
console.log(data.toString(), 'from', conn.remoteAddress, ':', conn.remotePort);
conn.write('Repeating:' + data);
});
conn.on('close', () => {
console.log('Client', conn.remoteAddress, ':', conn.remotePort, 'closed connection');
});
}).listen(PORT);
server.on('listening', () => {
console.log('listening on port', PORT);
});
server.on('error', (err) => {
if (err.code == 'EADDRINUSE') {
console.warn('Address in use, retrying...');
setTimeout(() => {
server.close();
server.listen(PORT);
}, 2000);
} else {
console.error(err);
}
});
File client.js
:
'use strict';
var net = require('net');
var client = net.Socket();
const HOST = 'localhost';
const PORT = 3000;
client.setEncoding('utf8');
client.connect(PORT, HOST, () => {
console.log('connected to the server');
client.write('Test from the client.');
});
process.stdin.on('data', (data) => {
client.write(data);
});
client.on('data', (data) => {
console.log(data);
});
client.on('close', () => {
console.log('connection is closed');
});
Sample output
server:
listening on port 3000
connected
Test from the client. from ::ffff:127.0.0.1 : 3415
hello world
from ::ffff:127.0.0.1 : 3415
how are you?
from ::ffff:127.0.0.1 : 3415
client:
connected to the server
Repeating:Test from the client.
hello world
Repeating:hello world
how are you?
Repeating:how are you?