Skip to content

Instantly share code, notes, and snippets.

@serhatates
Last active September 8, 2021 14:31
Show Gist options
  • Save serhatates/f5b3048f3238b82750100909303afacf to your computer and use it in GitHub Desktop.
Save serhatates/f5b3048f3238b82750100909303afacf to your computer and use it in GitHub Desktop.
Server - Client TCP [node.js]
/*
========
Client
========
*/
var net = require('net');
const HOST = '127.0.0.1';
const PORT = 8888;
var client = new net.Socket();
client.connect(PORT, HOST, function() {
console.log('Connected');
client.write('Hello, server! Love, Client.');
});
/* Add a 'data' event handler for the client socket
data is what the server sent to this socket */
client.on('data', function(data) {
console.log('Received: ' + data);
client.destroy(); // kill client after server's response
});
// Add a 'close' event handler for the client socket
client.on('close', function() {
console.log('Connection closed');
});
/*
========
Server
========
*/
var net = require('net');
var server = net.createServer(function(socket) {
console.log('Connected: ' + socket.remoteAddress + ':' + socket.remotePort);
socket.write('Echo server\r\n');
socket.pipe(socket);
// Add a 'data' event handler to this instance of socket
socket.on('data', function (data) {
console.log('data ' + socket.remoteAddress + ': ' + data);
// Write the data back to the socket
socket.write('You said "' + data + '"');
});
// Add a 'close' event handler to this instance of socket
socket.on('close', function (data) {
console.log('Close: ' + socket.remoteAddress + ' ' + socket.remotePort);
});
});
// Add a 'error' event handler to this instance of socket
server.on('error', (e) => {
// error example
if (e.code === 'EADDRINUSE') {
console.log('Address in use, retrying...');
setTimeout(() => {
server.close();
server.listen(8888, function () {
console.log('server listening to %j', server.address());
});
}, 1000);
}
});
server.listen(8888, function () {
console.log('server listening to %j', server.address());
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment