diff --git a/doc/api/dgram.markdown b/doc/api/dgram.markdown index d057b412fb..150d5d8b15 100644 --- a/doc/api/dgram.markdown +++ b/doc/api/dgram.markdown @@ -1,50 +1,65 @@ -## UDP / Datagram Sockets +# UDP / Datagram Sockets + + Datagram sockets are available through `require('dgram')`. +## 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`. + +## Class: Socket + +The dgram Socket class encapsulates the datagram functionality. It +should be created via `dgram.createSocket(type, [callback])`. + ### Event: 'message' -`function (msg, rinfo) { }` +* `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 and the number of bytes in the datagram. ### Event: 'listening' -`function () { }` - Emitted when a socket starts listening for datagrams. This happens as soon as UDP sockets are created. ### Event: 'close' -`function () { }` - Emitted when a socket is closed with `close()`. No new `message` events will be emitted on this socket. ### Event: 'error' -`function (exception) {}` +* `exception` Error object Emitted when an error occurs. ---- - -### dgram.createSocket(type, [callback]) - -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.send(buf, offset, length, port, address, [callback]) +* `buf` Buffer object. 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 IP +* `callback` Function. Callback when message is done being delivered. + Optional. + For UDP sockets, the destination port and IP address must be specified. A string may be supplied for the `address` parameter, and it will be resolved with DNS. An optional callback may be specified to detect any DNS errors and when `buf` may be @@ -93,6 +108,9 @@ informing the source that the data did not reach its intended recipient). ### dgram.bind(port, [address]) +* `port` Integer +* `address` String, Optional + For UDP sockets, listen for datagrams on a named `port` and optional `address`. If `address` is not specified, the OS will try to listen on all addresses. @@ -128,11 +146,15 @@ this object will contain `address` and `port`. ### dgram.setBroadcast(flag) +* `flag` Boolean + 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. ### dgram.setTTL(ttl) +* `ttl` Integer + 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 @@ -144,6 +166,8 @@ systems is 64. ### dgram.setMulticastTTL(ttl) +* `ttl` Integer + Sets the `IP_MULTICAST_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, specifically for multicast traffic. Each router or gateway that forwards a packet @@ -154,11 +178,16 @@ systems is 64. ### dgram.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. ### dgram.addMembership(multicastAddress, [multicastInterface]) +* `multicastAddress` String +* `multicastInterface` String, Optional + Tells the kernel to join a multicast group with `IP_ADD_MEMBERSHIP` socket option. If `multicastInterface` is not specified, the OS will try to add membership to all valid @@ -166,6 +195,9 @@ interfaces. ### dgram.dropMembership(multicastAddress, [multicastInterface]) +* `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