Skip to content

Instantly share code, notes, and snippets.

@tdegrunt
Created January 15, 2012 22:47
Show Gist options
  • Save tdegrunt/1617830 to your computer and use it in GitHub Desktop.
Save tdegrunt/1617830 to your computer and use it in GitHub Desktop.
PING PONG with UDP/dgram sockets
// Node 0.4.12
dgram = require('dgram');
var secret_port = 1337;
var clientPort = 0;
function clientListen(port) {
var server = dgram.createSocket("udp4");
server.on("message", function (msg, rinfo) {
console.log("client got: " + msg + " from " + rinfo.address + ":" + rinfo.port);
});
server.bind(port);
}
function listen(port) {
var server = dgram.createSocket("udp4");
server.addMembership('239.255.255.250');
server.bind(port);
server.setBroadcast(true);
server.setMulticastTTL(4);
console.log("Server listening on "+port);
server.on("message", function (msg, rinfo) {
// Pretty naive
if( rinfo.port != clientPort) {
console.log("server got: " + msg + " from " + rinfo.address + ":" + rinfo.port);
var message = new Buffer("PONG "+clientPort);
server.send(message, 0, message.length, rinfo.port, rinfo.address, function(err, bytes) {
console.log ("sending "+message+" to " + rinfo.address + ":" + rinfo.port);
});
} else {
console.log("Ignoring myself!");
}
});
}
listen(secret_port);
var message = new Buffer("PING");
var client = dgram.createSocket("udp4");
client.bind();
client.send(message, 0, message.length, secret_port, "239.255.255.250", function(err, bytes) {
console.log ("sending "+message+" to " + "239.255.255.250" + ":" + secret_port);
clientPort = client.address().port;
console.log( "Client listening on "+clientPort);
client.close();
clientListen(clientPort);
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment