Use Node.js in your end devices(QQ: 796448809)
The following shows dgram module APIs available for each platform.
| Linux (Ubuntu) |
Raspbian (Raspberry Pi) |
NuttX (STM32F4-Discovery) |
TizenRT (Artik053) |
|
|---|---|---|---|---|
| dgram.createSocket | O | O | △ ¹ | △ ¹ |
| dgram.Socket.addMembership | O | O | X | O |
| dgram.Socket.address | O | O | X | O |
| dgram.Socket.bind | O | O | △ ¹ | △ ¹ |
| dgram.Socket.close | O | O | △ ² | O |
| dgram.Socket.dropMembership | O | O | X | O |
| dgram.Socket.send | O | O | △ ¹ | △ ¹ |
| dgram.Socket.setBroadcast | O | O | X | X |
| dgram.Socket.setMulticastLoopback | O | O | X | O |
| dgram.Socket.setMulticastTTL | X | X | X | O |
| dgram.Socket.setTTL | O | O | X | O |
On NuttX/STM32F4-Discovery and TizenRT/Artik053, even a couple of sockets/server/requests might not work properly.
On NuttX/STM32F4-Discovery, close() may block due to a bug in poll().
The dgram module provides an implementation of UDP Datagram sockets.
The following example creates a UDP Datagram server.
Example
var dgram = require('dgram');
var server = dgram.createSocket('udp4');
server.on('error', function (err) {
console.log('Error: ' + err);
server.close();
});
server.on('message', function(msg, rinfo) {
// prints: message received
console.log('server got: ' + msg);
});
server.on('listening', function() {
console.log('server listening at ' + server.address().port);
});
server.bind(41234);
options {Object}
type {string}reuseAddr {boolean}callback {Function} (optional)Creates a new dgram.Socket object. The type of the connection
is specified by options.type. Currently only udp4 is supported.
If reuseAddr is true the socket.bind() call reuses the address
even if this address has been bound by another process.
The optional ‘callback’ function is attached to the
'message' event.
Example
var dgram = require('dgram');
var server = dgram.createSocket({ type: 'udp4', reuseAddr: true});
type {string}callback {Function} (optional)Creates a new dgram.Socket object. The type of the connection
is specified by the type argument. Currently only udp4 is
supported.
The optional ‘callback’ function is attached to the
'message' event.
Example
var dgram = require('dgram');
var server = dgram.createSocket('udp4');
The dgram.Socket object is an EventEmitter that encapsulates the
datagram functionality.
New instances of dgram.Socket are created using dgram.createSocket().
The new keyword must not be used to create dgram.Socket instances.
Supported events:
The 'close' event is emitted after a socket is closed with close().
Once triggered, no new 'message' events will be emitted on this socket.
exception {Error}The 'error' event is emitted whenever any error occurs. A single Error
object is passed to the event handler.
The 'listening' event is emitted whenever a socket begins listening
for datagram messages. This occurs as soon as UDP sockets are created.
msg {Buffer} The message.rinfo {Object} Remote address information.
address {string} The sender address.family {string} The address family (‘IPv4’).port {number} The sender port.size {number} The message size.The 'message' event is emitted when a new datagram is received by
the socket. The msg argument contains the message data and the rinfo
argument contains the message properties.
multicastAddress {string}multicastInterface {string}Joins the multicast group specified by multicastAddress and
multicastInterface. If multicastInterface is undefined the
operating system will choose one add interface and will add
membership to it. To add membership to every available interface,
call addMembership multiple times, once per interface.
Example
var dgram = require('dgram');
var multicast_address = '230.255.255.250';
var server = dgram.createSocket('udp4');
server.bind(12345 /* port */, function() {
server.addMembership(multicast_address);
});
Returns an object with the properties address, port and family.
Example
var dgram = require('dgram');
var server = dgram.createSocket('udp4');
server.on('listening', function () {
var address = server.address();
// prints: address and port of the server address
console.log('Addr: ' + address.address + ' port: ' + address.port);
});
server.bind(12345 /* port */);
port {number}address {string} Default: 0.0.0.0bindListener {Function}Assign the port and address to an UDP socket. If port is
not specified the operating system selects a random unused
port.
The optional ‘bindListener’ function is attached to the
'listening' event.
Example
var dgram = require('dgram');
var socket = dgram.createSocket({ type: 'udp4', reuseAddr: true });
var port = 12345;
socket.bind(port, function () {
// prints: Listening for packets
console.log('Listening for packets');
});
options {Object}
port {number}address {string} Default: 0.0.0.0bindListener {Function}Assign options.port and options.address to an UDP socket.
If options.port is not specified the operating system selects
a random unused port.
The optional ‘bindListener’ function is attached to the
'listening' event.
Example
var dgram = require('dgram');
var socket = dgram.createSocket({ type: 'udp4', reuseAddr: true });
socket.bind({ port:12345 }, function () {
// prints: Listening for packets
console.log('Listening for packets');
});
closeListener {Function}Close the underlying socket and stop listening for data on it.
The optional ‘closeListener’ function is attached to the
'close' event.
Example
var dgram = require('dgram');
var socket = dgram.createSocket({ type: 'udp4', reuseAddr: true });
// prints: Close!
socket.close(function () {
// prints: Socket is closed
console.log('Socket is closed');
});
multicastAddress {string}multicastInterface {string}Leaves for socket the given multicast group with given multicastAddress and multicastInterface.
Example
var dgram = require('dgram');
var server = dgram.createSocket('udp4');
var multicast_address = '230.255.255.250';
server.bind(12345 /* port */, function() {
server.addMembership(multicast_address);
});
server.on('message', function(data, rinfo) {
// Drop membership when a message arrived.
server.dropMembership(multicast_address);
});
flag {boolean}Sets or clears the SO_BROADCAST socket option. When flag is
true UDP packets may be sent to a local interface’s broadcast
address.
Example
var dgram = require('dgram');
var socket = dgram.createSocket({ type: 'udp4', reuseAddr: true });
var port = 41237;
socket.bind(port, function() {
socket.setBroadcast(true);
});
msg {Buffer |
string | array} |
offset {integer} Only valid if msg is Buffer.length {integer} Only valid if msg is Buffer.port {integer}address {string} Default: 127.0.0.1 or ::1sendListener {Function}
Error {Object |
null} |
code {string} Currently it is always "error".errno {string} Same as code.syscall {integer}address {string}port {integer}length {integer} Length of data.Transmits a message to the destination socket specified by
address and port arguments. The msg argument contains
the data to be sent. It can be a {Buffer}, a {string} converted
to UTF-8 bytes, or an array of {Buffer} and {string} values.
In the latter case the items of the array are concatenated
into a single {Buffer} before sending.
If send operation is successfully completed, sendListener will
be called with null and the length of data. Otherwise an
Error {Object} is passed along with the length of data.
Example
var dgram = require('dgram');
var socket = dgram.createSocket({ type: 'udp4', reuseAddr: true });
var broadcast_address = '255.255.255.255';
var port = 41237;
socket.bind(port, function() {
socket.setBroadcast(true);
socket.send('Hello IoT.js', port, broadcast_address);
});
msg {Buffer |
string | array} |
offset {integer}length {integer}port {integer}address {string} Default: 127.0.0.1 or ::1sendListener {Function}Legacy function. It is the same as
socket.send
except offset and length arguments are mandatory.
flag {boolean}Sets or clears the IP_MULTICAST_LOOP socket option. When flag is
true multicast packets will also be received on the local interface.
Example
var dgram = require('dgram');
var socket = dgram.createSocket({ type: 'udp4', reuseAddr: true });
var port = 41237;
socket.bind(port, function() {
socket.setMulticastLoopback(true);
});
ttl {integer} This value must be between 0 and 255.Sets the IP_MULTICAST_TTL socket option which pecifies the
number of IP hops that a packet is allowed to travel through,
specifically for multicast traffic. Each router or gateway
that forwards a packet decrements its TTL. When TTL reaches
zero the packet is not forwarded anymore.
The default on most systems is 1 but can vary.
Example
var dgram = require('dgram');
var socket = dgram.createSocket({ type: 'udp4', reuseAddr: true });
var port = 41237;
socket.bind(port, function() {
socket.setMulticastTTL(1);
});
ttl {integer} This value must be between 1 and 255.Sets the IP_TTL socket option which specifies the number of IP
hops that a packet is allowed to travel through. Each router or
gateway that forwards a packet decrements its TTL. When TTL reaches
zero the packet is not forwarded anymore.
The default on most systems is 64 but can vary.
Example
var dgram = require('dgram');
var socket = dgram.createSocket({ type: 'udp4', reuseAddr: true });
var port = 41237;
socket.bind(port, function() {
socket.setTTL(64);
});