Skip to content
Closed
Changes from 1 commit
Commits
Show all changes
132 commits
Select commit Hold shift + click to select a range
44d4a02
deps: upgrade npm to 2.14.9
othiym23 Nov 6, 2015
75b4613
test: enhance fs-watch-recursive test
thefourtheye Aug 28, 2015
aef3d54
build: fix configuring with prebuilt libraries
zyxar Sep 30, 2015
5689630
docs: fs - change links to buffer encoding to Buffer class anchor
Oct 13, 2015
38a5ae1
doc: stdout/stderr can block when directed to file
bnoordhuis Oct 3, 2015
22bfe22
doc: add method links in events.markdown
a0viedo Nov 6, 2015
bf48969
repl: To exit, press ^C again or type .exit.
hemanth Nov 7, 2015
4a94c0a
doc: add caveats of algs and key size in crypto
Jul 27, 2015
550c606
src: Revert "nix stdin _readableState.reading"
silverwind Oct 26, 2015
d02365b
doc: add note about timeout delay > TIMEOUT_MAX
sitegui Oct 25, 2015
dfc2707
doc:fix function param order in assert doc
birnam Oct 26, 2015
d1cedbd
zlib: pass kind to recursive calls to flush
Oct 26, 2015
1543c78
zlib: only apply drain listener if given callback
CraigCav Oct 26, 2015
84f8eb7
test: add test-zlib-flush-drain
Nov 11, 2015
98762d2
doc: added what buf.copy returns
baslr Oct 28, 2015
935b8be
Add missing va_end before return
usta Oct 28, 2015
08ab9f3
doc: made code spans more visible in the API docs
phillipj Oct 28, 2015
948af71
module: remove unnecessary JSON.stringify
zertosh Oct 29, 2015
bb20abb
doc: Updated streams simplified constructor API
tomgco Oct 30, 2015
c10f17f
test: fix path to module for repl test on Windows
mcornac Oct 30, 2015
b3b55a5
doc: fix crypto spkac function descriptions
jas- Oct 31, 2015
486d287
repl: don't crash if cannot open history file
evanlucas Nov 2, 2015
5a23bb5
doc: rename iojs-* groups to nodejs-*
srl295 Nov 2, 2015
d410d58
doc: fix wrong date and known issue in changelog.md
jasnell Nov 3, 2015
7009e01
test: fix test-net-persistent-keepalive for AIX
Nov 3, 2015
d7b4f75
doc: typo fix in readme.md
SPGB Nov 3, 2015
2570cb7
test: fix test-module-loading-error for musl
hmalphettes Nov 10, 2015
9ce1f75
doc: add LTS info to COLLABORATOR_GUIDE.md
Oct 19, 2015
9970b76
doc: update lts description in the collaborator guide
jasnell Nov 5, 2015
0fb40b4
test: Fix test-cluster-worker-exit.js for AIX
Nov 4, 2015
1064eb6
util: use regexp instead of str.replace().join()
hellopao Nov 6, 2015
a632db5
dns: prevent undefined values in results
Nov 6, 2015
07b5791
test: use really invalid hostname
thefourtheye Nov 8, 2015
e86817c
cluster: send suicide message on disconnect
cjihrig Nov 9, 2015
64e6d06
doc: add thealphanerd to collaborators
Nov 9, 2015
5cbfb76
doc: add saghul as a collaborator
saghul Nov 9, 2015
a49dd89
doc: add romankl to collaborators
r-52 Nov 9, 2015
3435f87
doc: add note to util.isBuffer
evanlucas Nov 12, 2015
c37a560
crypto: Improve error checking and reporting
stefanmb Nov 9, 2015
8b6120d
doc: add note on tls connection meta data methods
DaftMonk Nov 10, 2015
2f8caaf
doc: sort assert alphabetically
tflanagan Nov 4, 2015
2433e3d
doc: sort buffer alphabetically
tflanagan Nov 4, 2015
2c5e7ed
doc: sort child_process alphabetically
tflanagan Nov 4, 2015
4485236
doc: sort cluster alphabetically
tflanagan Nov 4, 2015
1b668b5
doc: sort console alphabetically
tflanagan Nov 4, 2015
720f068
doc: sort dns alphabetically
tflanagan Nov 4, 2015
ecfbbf0
doc: sort crypto alphabetically
tflanagan Nov 4, 2015
128d100
doc: sort dgram alphabetically
tflanagan Nov 4, 2015
c8ba557
doc: sort errors alphabetically
tflanagan Nov 4, 2015
1f644b1
doc: sort events alphabetically
tflanagan Nov 4, 2015
fc346fb
doc: sort fs alphabetically
tflanagan Nov 4, 2015
806b694
doc: sort globals alphabetically
tflanagan Nov 4, 2015
bbd00ee
doc: sort os alphabetically
tflanagan Nov 4, 2015
7827749
doc: sort path alphabetically
tflanagan Nov 4, 2015
84b9376
doc: sort punycode alphabetically
tflanagan Nov 4, 2015
d7b685c
doc: sort querystring alphabetically
tflanagan Nov 4, 2015
0814b8c
doc: sort vm alphabetically
tflanagan Nov 4, 2015
fd2e926
doc: sort url alphabetically
tflanagan Nov 4, 2015
ea66bd3
doc: sort tty alphabetically
tflanagan Nov 4, 2015
cf96a53
doc: sort timers alphabetically
tflanagan Nov 4, 2015
babc561
doc: sort string_decoder alphabetically
tflanagan Nov 4, 2015
45f7d75
doc: sort repl alphabetically
tflanagan Nov 4, 2015
fdeaec5
doc: sort readline alphabetically
tflanagan Nov 4, 2015
133f84e
doc: sort modules alphabetically
tflanagan Nov 4, 2015
2cac10d
doc: sort http alphabetically
tflanagan Nov 4, 2015
cb62bb2
doc: sort https alphabetically
tflanagan Nov 4, 2015
57f298f
doc: sort util alphabetically
tflanagan Nov 5, 2015
e670439
doc: sort zlib alphabetically
tflanagan Nov 5, 2015
2564672
doc: sort process alphabetically
tflanagan Nov 5, 2015
600bc56
doc: sort net alphabetically
tflanagan Nov 5, 2015
4635696
doc: sort stream alphabetically
tflanagan Nov 5, 2015
65267bc
doc: sort tls alphabetically
tflanagan Nov 5, 2015
877d86d
doc: add link to [customizing util.inspect colors].
jmm Nov 10, 2015
208de53
doc: document release types in readme
rvagg Oct 22, 2015
5254fda
doc: repl: add defineComand and displayPrompt
bengl Nov 11, 2015
f5dde5e
test: fix flaky test test-http-pipeline-flood
Sep 14, 2015
9294523
test: refactor test-http-pipeline-flood
Trott Nov 2, 2015
643d949
docs: improve discoverability of Code of Conduct
ashleygwilliams Nov 11, 2015
4bfa159
doc: replace head of readme with updated text
rvagg Oct 22, 2015
0c5429a
doc: clarify duplicate header handling
bengl Nov 13, 2015
fc629c2
doc: reword message.headers to indicate they are not read-only
tflanagan Nov 13, 2015
79220be
doc: address use of profanity in code of conduct
jasnell Nov 14, 2015
ff992ff
doc: consistent reference-style links
bengl Nov 14, 2015
c914516
doc: sort repl alphabetically
tflanagan Nov 16, 2015
97a4862
deps: backport 819b40a from V8 upstream
targos Nov 20, 2015
93cfe65
doc: update WORKING_GROUPS.md to include Intl
srl295 Oct 7, 2015
4c97fb7
doc: Adding best practises for crypto.pbkdf2
tomgco Oct 9, 2015
31b247b
src: add BE support to StringBytes::Encode()
exinfinitum Oct 7, 2015
982a1a2
tls: remove util and calls to util.format
Oct 20, 2015
41453b3
doc: clarify that fs streams expect blocking fd
XeCycle Nov 3, 2015
0482ec4
test: numeric flags to fs.open
XeCycle Nov 3, 2015
d2d4f17
doc: numeric flags to fs.open
XeCycle Nov 3, 2015
0f571e7
child_process: don't fork bomb ourselves from -e
bnoordhuis Oct 28, 2015
a61f7b7
cluster: remove handles when disconnecting worker
bnoordhuis Nov 3, 2015
d5883be
tls: Use SHA1 for sessionIdContext in FIPS mode
stefanmb Nov 9, 2015
43a0d1e
crypto: DSA parameter validation in FIPS mode
stefanmb Nov 10, 2015
b78b8a9
test: add test for invalid DSA key size
stefanmb Nov 13, 2015
effba0b
test: add hasFipsCrypto to test/common.js
stefanmb Nov 12, 2015
823b8ba
test: increase crypto strength for FIPS standard
stefanmb Nov 10, 2015
dc09dea
test: stronger crypto in test fixtures
stefanmb Nov 10, 2015
3338fd7
test: skip/replace weak crypto tests in FIPS mode
stefanmb Nov 10, 2015
8c9d6c6
buffer: let WriteFloatGeneric silently drop values
pmq20 Nov 16, 2015
1f653f6
child_process: add safety checks on stdio access
cjihrig Nov 12, 2015
4ca83c2
querystring: Parse multiple separator characters
yosuke-furukawa Nov 12, 2015
6d29b02
build: fix --with-intl=system-icu for x-compile
srl295 Nov 13, 2015
04d3c1d
test: run pipeline flood test in parallel
Trott Nov 13, 2015
2d39141
test: fix flaky SmartOS test
Trott Nov 15, 2015
d93921a
test: skip test if FreeBSD jail will break it
Trott Nov 15, 2015
9827814
test: module loading error fix solaris #3798
Nov 16, 2015
746e279
module: cache regular expressions
evanlucas Nov 17, 2015
3204938
test: move test-specific function out of common
Trott Nov 17, 2015
40311b6
test: fix flaky test-child-process-spawnsync-input
Trott Nov 17, 2015
5f0dd69
test: avoid test timeouts on rpi
stefanmb Nov 18, 2015
ebf072a
doc: clarify module loading behavior
cjihrig Nov 19, 2015
f036401
doc: add reference for buffer.inspect()
cjihrig Nov 19, 2015
9bc9a2b
test: retry on smartos if ECONNREFUSED
Trott Nov 20, 2015
4dfc823
doc: fix broken references
gromnitsky Nov 20, 2015
2577a30
net: add local address/port for better errors
jscissr Nov 20, 2015
63c39b6
doc: fix rare case of misaligned columns
silverwind Nov 21, 2015
6b4cbd6
test: address flaky test-http-client-timeout-event
Trott Nov 22, 2015
45e27d1
test: remove flaky status for cluster test
Trott Nov 23, 2015
10cd439
doc: replace sane with reasonable
lewiscowper Nov 23, 2015
1de55d3
test: fix test-domain-exit-dispose-again
Nov 23, 2015
5702eef
test: skip test if in FreeBSD jail
Trott Nov 24, 2015
ef34bd7
doc: message.header duplication correction
bengl Nov 24, 2015
2a36661
doc: fix typo in README
Trott Nov 24, 2015
003a885
test: mark fork regression test flaky on windows
Trott Nov 25, 2015
5dc1f53
doc: fix color of linked code blocks
Nov 29, 2015
9694983
test: remove flaky designation from ls-no-sslv3
Trott Nov 1, 2015
63e4adb
test: mark cluster-net-send test flaky on windows
Trott Nov 24, 2015
d7637c9
test: mark test flaky on FreeBSD
Trott Nov 25, 2015
7e30ee6
deps: backport 200315c from V8 upstream (v4.x)
vkurchatkin Dec 3, 2015
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
doc: sort dgram alphabetically
Reorders, with no contextual changes, the dgram documentation
alphabetically.

PR-URL: #3662
Reviewed-By: Evan Lucas <evanlucas@me.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
  • Loading branch information
tflanagan authored and Myles Borins committed Nov 17, 2015
commit 128d100a0a20a0ba95fe9931bd3b6c2371ba31d3
301 changes: 149 additions & 152 deletions doc/api/dgram.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -20,66 +20,11 @@ You have to change it to this:
s.addMembership('224.0.0.114');
});


## dgram.createSocket(type[, callback])

* `type` String. Either 'udp4' or 'udp6'
* `callback` Function. Attached as a listener to `message` events.
Optional
* Returns: Socket object

Creates a datagram Socket of the specified types. Valid types are `udp4`
and `udp6`.

Takes an optional callback which is added as a listener for `message` events.

Call `socket.bind()` if you want to receive datagrams. `socket.bind()` will
bind to the "all interfaces" address on a random port (it does the right thing
for both `udp4` and `udp6` sockets). You can then retrieve the address and port
with `socket.address().address` and `socket.address().port`.

## dgram.createSocket(options[, callback])
* `options` Object
* `callback` Function. Attached as a listener to `message` events.
* Returns: Socket object

The `options` object should contain a `type` field of either `udp4` or `udp6`
and an optional boolean `reuseAddr` field.

When `reuseAddr` is `true` `socket.bind()` will reuse the address, even if
another process has already bound a socket on it. `reuseAddr` defaults to
`false`.

Takes an optional callback which is added as a listener for `message` events.

Call `socket.bind()` if you want to receive datagrams. `socket.bind()` will
bind to the "all interfaces" address on a random port (it does the right thing
for both `udp4` and `udp6` sockets). You can then retrieve the address and port
with `socket.address().address` and `socket.address().port`.

## Class: dgram.Socket

The dgram Socket class encapsulates the datagram functionality. It
should be created via `dgram.createSocket(...)`

### Event: 'message'

* `msg` Buffer object. The message
* `rinfo` Object. Remote address information

Emitted when a new datagram is available on a socket. `msg` is a `Buffer` and
`rinfo` is an object with the sender's address information:

socket.on('message', function(msg, rinfo) {
console.log('Received %d bytes from %s:%d\n',
msg.length, rinfo.address, rinfo.port);
});

### Event: 'listening'

Emitted when a socket starts listening for datagrams. This happens as soon as UDP sockets
are created.

### Event: 'close'

Emitted after a socket is closed with `close()`. No new `message` events will be emitted
Expand All @@ -91,72 +36,38 @@ on this socket.

Emitted when an error occurs.

### socket.send(buf, offset, length, port, address[, callback])

* `buf` Buffer object or string. Message to be sent
* `offset` Integer. Offset in the buffer where the message starts.
* `length` Integer. Number of bytes in the message.
* `port` Integer. Destination port.
* `address` String. Destination hostname or IP address.
* `callback` Function. Called when the message has been sent. Optional.

For UDP sockets, the destination port and address must be specified. A string
may be supplied for the `address` parameter, and it will be resolved with DNS.

If the address is omitted or is an empty string, `'0.0.0.0'` or `'::0'` is used
instead. Depending on the network configuration, those defaults may or may not
work; it's best to be explicit about the destination address.
### Event: 'listening'

If the socket has not been previously bound with a call to `bind`, it gets
assigned a random port number and is bound to the "all interfaces" address
(`'0.0.0.0'` for `udp4` sockets, `'::0'` for `udp6` sockets.)
Emitted when a socket starts listening for datagrams. This happens as soon as UDP sockets
are created.

An optional callback may be specified to detect DNS errors or for determining
when it's safe to reuse the `buf` object. Note that DNS lookups delay the time
to send for at least one tick. The only way to know for sure that the datagram
has been sent is by using a callback. If an error occurs and a callback is
given, the error will be the first argument to the callback. If a callback is
not given, the error is emitted as an `'error'` event on the `socket` object.
### Event: 'message'

With consideration for multi-byte characters, `offset` and `length` will
be calculated with respect to
[byte length](buffer.html#buffer_class_method_buffer_bytelength_string_encoding)
and not the character position.
* `msg` Buffer object. The message
* `rinfo` Object. Remote address information

Example of sending a UDP packet to a random port on `localhost`;
Emitted when a new datagram is available on a socket. `msg` is a `Buffer` and
`rinfo` is an object with the sender's address information:

var dgram = require('dgram');
var message = new Buffer("Some bytes");
var client = dgram.createSocket("udp4");
client.send(message, 0, message.length, 41234, "localhost", function(err) {
client.close();
socket.on('message', function(msg, rinfo) {
console.log('Received %d bytes from %s:%d\n',
msg.length, rinfo.address, rinfo.port);
});

**A Note about UDP datagram size**
### socket.addMembership(multicastAddress[, multicastInterface])

The maximum size of an `IPv4/v6` datagram depends on the `MTU` (_Maximum Transmission Unit_)
and on the `Payload Length` field size.
* `multicastAddress` String
* `multicastInterface` String, Optional

- The `Payload Length` field is `16 bits` wide, which means that a normal payload
cannot be larger than 64K octets including internet header and data
(65,507 bytes = 65,535 − 8 bytes UDP header − 20 bytes IP header);
this is generally true for loopback interfaces, but such long datagrams
are impractical for most hosts and networks.
Tells the kernel to join a multicast group with `IP_ADD_MEMBERSHIP` socket option.

- The `MTU` is the largest size a given link layer technology can support for datagrams.
For any link, `IPv4` mandates a minimum `MTU` of `68` octets, while the recommended `MTU`
for IPv4 is `576` (typically recommended as the `MTU` for dial-up type applications),
whether they arrive whole or in fragments.
If `multicastInterface` is not specified, the OS will try to add membership to all valid
interfaces.

For `IPv6`, the minimum `MTU` is `1280` octets, however, the mandatory minimum
fragment reassembly buffer size is `1500` octets.
The value of `68` octets is very small, since most current link layer technologies have
a minimum `MTU` of `1500` (like Ethernet).
### socket.address()

Note that it's impossible to know in advance the MTU of each link through which
a packet might travel, and that generally sending a datagram greater than
the (receiver) `MTU` won't work (the packet gets silently dropped, without
informing the source that the data did not reach its intended recipient).
Returns an object containing the address information for a socket. For UDP sockets,
this object will contain `address` , `family` and `port`.

### socket.bind([port][, address][, callback])

Expand Down Expand Up @@ -204,7 +115,6 @@ Example of a UDP server listening on port 41234:
server.bind(41234);
// server listening 0.0.0.0:41234


### socket.bind(options[, callback])

* `options` {Object} - Required. Supports the following properties:
Expand All @@ -230,16 +140,90 @@ shown below.
exclusive: true
});


### socket.close([callback])

Close the underlying socket and stop listening for data on it. If a callback is
provided, it is added as a listener for the ['close'](#dgram_event_close) event.

### socket.address()
### socket.dropMembership(multicastAddress[, multicastInterface])

Returns an object containing the address information for a socket. For UDP sockets,
this object will contain `address` , `family` and `port`.
* `multicastAddress` String
* `multicastInterface` String, Optional

Opposite of `addMembership` - tells the kernel to leave a multicast group with
`IP_DROP_MEMBERSHIP` socket option. This is automatically called by the kernel
when the socket is closed or process terminates, so most apps will never need to call
this.

If `multicastInterface` is not specified, the OS will try to drop membership to all valid
interfaces.

### socket.send(buf, offset, length, port, address[, callback])

* `buf` Buffer object or string. Message to be sent
* `offset` Integer. Offset in the buffer where the message starts.
* `length` Integer. Number of bytes in the message.
* `port` Integer. Destination port.
* `address` String. Destination hostname or IP address.
* `callback` Function. Called when the message has been sent. Optional.

For UDP sockets, the destination port and address must be specified. A string
may be supplied for the `address` parameter, and it will be resolved with DNS.

If the address is omitted or is an empty string, `'0.0.0.0'` or `'::0'` is used
instead. Depending on the network configuration, those defaults may or may not
work; it's best to be explicit about the destination address.

If the socket has not been previously bound with a call to `bind`, it gets
assigned a random port number and is bound to the "all interfaces" address
(`'0.0.0.0'` for `udp4` sockets, `'::0'` for `udp6` sockets.)

An optional callback may be specified to detect DNS errors or for determining
when it's safe to reuse the `buf` object. Note that DNS lookups delay the time
to send for at least one tick. The only way to know for sure that the datagram
has been sent is by using a callback. If an error occurs and a callback is
given, the error will be the first argument to the callback. If a callback is
not given, the error is emitted as an `'error'` event on the `socket` object.

With consideration for multi-byte characters, `offset` and `length` will
be calculated with respect to
[byte length](buffer.html#buffer_class_method_buffer_bytelength_string_encoding)
and not the character position.

Example of sending a UDP packet to a random port on `localhost`;

var dgram = require('dgram');
var message = new Buffer("Some bytes");
var client = dgram.createSocket("udp4");
client.send(message, 0, message.length, 41234, "localhost", function(err) {
client.close();
});

**A Note about UDP datagram size**

The maximum size of an `IPv4/v6` datagram depends on the `MTU` (_Maximum Transmission Unit_)
and on the `Payload Length` field size.

- The `Payload Length` field is `16 bits` wide, which means that a normal payload
cannot be larger than 64K octets including internet header and data
(65,507 bytes = 65,535 − 8 bytes UDP header − 20 bytes IP header);
this is generally true for loopback interfaces, but such long datagrams
are impractical for most hosts and networks.

- The `MTU` is the largest size a given link layer technology can support for datagrams.
For any link, `IPv4` mandates a minimum `MTU` of `68` octets, while the recommended `MTU`
for IPv4 is `576` (typically recommended as the `MTU` for dial-up type applications),
whether they arrive whole or in fragments.

For `IPv6`, the minimum `MTU` is `1280` octets, however, the mandatory minimum
fragment reassembly buffer size is `1500` octets.
The value of `68` octets is very small, since most current link layer technologies have
a minimum `MTU` of `1500` (like Ethernet).

Note that it's impossible to know in advance the MTU of each link through which
a packet might travel, and that generally sending a datagram greater than
the (receiver) `MTU` won't work (the packet gets silently dropped, without
informing the source that the data did not reach its intended recipient).

### socket.setBroadcast(flag)

Expand All @@ -248,18 +232,12 @@ this object will contain `address` , `family` and `port`.
Sets or clears the `SO_BROADCAST` socket option. When this option is set, UDP packets
may be sent to a local interface's broadcast address.

### socket.setTTL(ttl)

* `ttl` Integer
### socket.setMulticastLoopback(flag)

Sets the `IP_TTL` socket option. TTL stands for "Time to Live," but in this context it
specifies the number of IP hops that a packet is allowed to go through. Each router or
gateway that forwards a packet decrements the TTL. If the TTL is decremented to 0 by a
router, it will not be forwarded. Changing TTL values is typically done for network
probes or when multicasting.
* `flag` Boolean

The argument to `setTTL()` is a number of hops between 1 and 255. The default on most
systems is 64.
Sets or clears the `IP_MULTICAST_LOOP` socket option. When this option is set, multicast
packets will also be received on the local interface.

### socket.setMulticastTTL(ttl)

Expand All @@ -273,35 +251,26 @@ decrements the TTL. If the TTL is decremented to 0 by a router, it will not be f
The argument to `setMulticastTTL()` is a number of hops between 0 and 255. The default on most
systems is 1.

### socket.setMulticastLoopback(flag)

* `flag` Boolean

Sets or clears the `IP_MULTICAST_LOOP` socket option. When this option is set, multicast
packets will also be received on the local interface.

### socket.addMembership(multicastAddress[, multicastInterface])

* `multicastAddress` String
* `multicastInterface` String, Optional
### socket.setTTL(ttl)

Tells the kernel to join a multicast group with `IP_ADD_MEMBERSHIP` socket option.
* `ttl` Integer

If `multicastInterface` is not specified, the OS will try to add membership to all valid
interfaces.
Sets the `IP_TTL` socket option. TTL stands for "Time to Live," but in this context it
specifies the number of IP hops that a packet is allowed to go through. Each router or
gateway that forwards a packet decrements the TTL. If the TTL is decremented to 0 by a
router, it will not be forwarded. Changing TTL values is typically done for network
probes or when multicasting.

### socket.dropMembership(multicastAddress[, multicastInterface])
The argument to `setTTL()` is a number of hops between 1 and 255. The default on most
systems is 64.

* `multicastAddress` String
* `multicastInterface` String, Optional
### socket.ref()

Opposite of `addMembership` - tells the kernel to leave a multicast group with
`IP_DROP_MEMBERSHIP` socket option. This is automatically called by the kernel
when the socket is closed or process terminates, so most apps will never need to call
this.
Opposite of `unref`, calling `ref` on a previously `unref`d socket will *not*
let the program exit if it's the only socket left (the default behavior). If
the socket is `ref`d calling `ref` again will have no effect.

If `multicastInterface` is not specified, the OS will try to drop membership to all valid
interfaces.
Returns `socket`.

### socket.unref()

Expand All @@ -311,10 +280,38 @@ active socket in the event system. If the socket is already `unref`d calling

Returns `socket`.

### socket.ref()
## dgram.createSocket(options[, callback])
* `options` Object
* `callback` Function. Attached as a listener to `message` events.
* Returns: Socket object

Opposite of `unref`, calling `ref` on a previously `unref`d socket will *not*
let the program exit if it's the only socket left (the default behavior). If
the socket is `ref`d calling `ref` again will have no effect.
The `options` object should contain a `type` field of either `udp4` or `udp6`
and an optional boolean `reuseAddr` field.

Returns `socket`.
When `reuseAddr` is `true` `socket.bind()` will reuse the address, even if
another process has already bound a socket on it. `reuseAddr` defaults to
`false`.

Takes an optional callback which is added as a listener for `message` events.

Call `socket.bind()` if you want to receive datagrams. `socket.bind()` will
bind to the "all interfaces" address on a random port (it does the right thing
for both `udp4` and `udp6` sockets). You can then retrieve the address and port
with `socket.address().address` and `socket.address().port`.

## dgram.createSocket(type[, callback])

* `type` String. Either 'udp4' or 'udp6'
* `callback` Function. Attached as a listener to `message` events.
Optional
* Returns: Socket object

Creates a datagram Socket of the specified types. Valid types are `udp4`
and `udp6`.

Takes an optional callback which is added as a listener for `message` events.

Call `socket.bind()` if you want to receive datagrams. `socket.bind()` will
bind to the "all interfaces" address on a random port (it does the right thing
for both `udp4` and `udp6` sockets). You can then retrieve the address and port
with `socket.address().address` and `socket.address().port`.