Created
October 23, 2019 23:52
-
-
Save avtehnik/9bb579847071bd36cf95bd80ef1d2018 to your computer and use it in GitHub Desktop.
node udp echo server
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"name": "service-discovery", | |
"version": "1.0.0", | |
"description": "", | |
"main": "udp-server.js", | |
"dependencies": { | |
"broadcast-address": "^1.0.2", | |
"dgram": "^1.0.1", | |
"dotenv": "^8.2.0" | |
}, | |
"devDependencies": {}, | |
"scripts": { | |
"test": "echo \"Error: no test specified\" && exit 1", | |
"install-service": "cp discovery-server.service /etc/systemd/system/discovery-server.service" | |
}, | |
"author": "", | |
"license": "ISC" | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//npm install broadcast-address | |
//npm install dgram | |
//npm install dotenv | |
var udp = require('dgram'); | |
var buffer = require('buffer'); | |
const os = require('os'); | |
const broadcastAddress = require('broadcast-address'); | |
var serverPort = process.env.UDP_ECHO_SERVER_PORT || 3192; | |
var client = udp.createSocket('udp4'); | |
var data = Buffer.from('siddheshrane'); | |
client.on('message', function(msg, info) { | |
console.log('Got response from %s:%d', info.address, info.port); | |
console.log('Pi ip address is %s', info.address); | |
console.log(''); | |
}); | |
client.bind(2221, undefined, function() { | |
client.setBroadcast(true); | |
}); | |
var interfaces = os.networkInterfaces(); | |
var interfacesNames = Object.keys(interfaces); | |
interfacesNames.forEach(function(interfacesName) { | |
var interfaceItem = interfaces[interfacesName]; | |
interfaceItem.forEach(function(interfaceAddress) { | |
if (interfaceAddress.family === 'IPv4') { | |
client.send(data, serverPort, broadcastAddress(interfacesName), function(error) { | |
if (error) { | |
client.close(); | |
} else { | |
console.log('Send request from ' + interfacesName + ' ' + interfaceAddress.address); | |
} | |
}) | |
} | |
}) | |
}); | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//npm install dgram | |
//npm install dotenv | |
const dotenv = require('dotenv'); | |
dotenv.config(); | |
var port = process.env.UDP_ECHO_SERVER_PORT || 3192; | |
var udp = require('dgram'); | |
var server = udp.createSocket('udp4'); | |
server.on('error', function(error) { | |
console.log('Error: ' + error); | |
server.close(); | |
}); | |
server.on('message', function(msg, info) { | |
console.log('Got message from %s:%d',info.address, info.port); | |
server.send(msg, info.port, info.address, function(error) { | |
if (error) { | |
client.close(); | |
} | |
}); | |
}); | |
server.on('listening', function() { | |
var address = server.address(); | |
var port = address.port; | |
var family = address.family; | |
var ipaddr = address.address; | |
console.log('Server is listening at port' + port); | |
console.log('Server ip :' + ipaddr); | |
console.log('Server is IP4/IP6 : ' + family); | |
}); | |
//emits after the socket is closed using socket.close(); | |
server.on('close', function() { | |
console.log('Socket is closed !'); | |
}); | |
server.bind(port); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment