Quantcast
Channel: JavaScript – delog
Viewing all articles
Browse latest Browse all 21

IP multicasting

$
0
0

IP multicasting is used to target a group of hosts by sending a single datagram. IP addresses in the range 224.0.0.0 through 239.255.255.255 are reserved for multicasting.

To find out which hosts on your subnet support multicasting, try

ping 224.0.0.1

Here’s a Node.js code snippet that sends UDP datagrams to multicast group 225.0.0.1 at port 8001

var dgram = require('dgram');
var s = dgram.createSocket('udp4');
s.bind(8000);
var b = new Buffer("Hello");
s.send(b, 0, b.length, 8001, "225.0.0.1", function(err, bytes) {
  console.log("Sent " + bytes + " bytes");
  s.close();
});

A host that desires to receive a datagram sent to a multicast group, must first request membership to that group. Here’s a Node.js code snippet that receives datagram sent by the code above

var dgram = require('dgram');
var s = dgram.createSocket('udp4');
s.bind(8001, function() {
  s.addMembership('225.0.0.1');
});
s.on("message", function (msg, rinfo) {
  console.log("server got: " + msg + " from " +
    rinfo.address + ":" + rinfo.port);
});

.NET code that does something similar can be found in the UDP Tool at GitHUb.

Receiving multicasts on Linux does not work when you bind the socket to a specific interface, for instance s.bind(8001, 192.168.1.1… does not work. It looks like a Linux-only quirk because it happens with both the Mono .NET runtime and Node.js.

Another quirk observed on Linux is the need to add a route to forward multicast IP packets to a wireless LAN interface that is used in access point mode, in tandem with hostapd e.g.

route add -net 225.0.0.0 netmask 255.0.0.0 gw 192.168.1.1

Filed under: .NET, JavaScript, Network

Viewing all articles
Browse latest Browse all 21

Trending Articles