Working with UDP (dgram)

1. Creating UDP Socket (dgram.createSocket)

Example

import dgram from "node:dgram";
const sock = dgram.createSocket("udp4");
sock.on("message", (msg, rinfo) => console.log(`from ${rinfo.address}:`, msg.toString()));
sock.bind(41234);
TypeUse
udp4IPv4
udp6IPv6
{ reuseAddr: true }Multiple binds (multicast)

2. Binding to Port (socket.bind)

APIEffect
sock.bind(port, addr)Listen on local addr/port
sock.bind()Random port + INADDR_ANY

3. Sending Messages (socket.send)

Example

sock.send(Buffer.from("ping"), 41234, "127.0.0.1", (err) => { if (err) console.error(err); });

4. Receiving Messages

EventArgs
message(msg: Buffer, rinfo)
listeningBound
errorFailure
closeSocket closed

5. Broadcasting Messages (setBroadcast)

Example

sock.setBroadcast(true);
sock.send(buf, port, "255.255.255.255");

6. Setting TTL (setTTL)

MethodUse
sock.setTTL(n)Unicast hop limit
sock.setMulticastTTL(n)Multicast hop limit

7. Joining Multicast Groups (addMembership)

Example

sock.bind(41234, () => sock.addMembership("224.0.0.114"));

8. Leaving Multicast Groups (dropMembership)

APIUse
sock.dropMembership(addr)Stop receiving multicast
sock.setMulticastLoopback(false)Don't receive own pkts

9. Closing UDP Socket (socket.close)

APIUse
sock.close(cb)Stop and emit close
sock.unref()Don't keep loop alive

10. Handling UDP Errors

SourceNotes
No connection stateErrors typically arrive via error event
EMSGSIZEPayload > MTU
Datagram deliveryUnreliable, unordered, may duplicate