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);
| Type | Use |
|---|---|
udp4 | IPv4 |
udp6 | IPv6 |
{ reuseAddr: true } | Multiple binds (multicast) |
2. Binding to Port (socket.bind)
| API | Effect |
|---|---|
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
| Event | Args |
|---|---|
message | (msg: Buffer, rinfo) |
listening | Bound |
error | Failure |
close | Socket closed |
5. Broadcasting Messages (setBroadcast)
6. Setting TTL (setTTL)
| Method | Use |
|---|---|
sock.setTTL(n) | Unicast hop limit |
sock.setMulticastTTL(n) | Multicast hop limit |
7. Joining Multicast Groups (addMembership)
8. Leaving Multicast Groups (dropMembership)
| API | Use |
|---|---|
sock.dropMembership(addr) | Stop receiving multicast |
sock.setMulticastLoopback(false) | Don't receive own pkts |
9. Closing UDP Socket (socket.close)
| API | Use |
|---|---|
sock.close(cb) | Stop and emit close |
sock.unref() | Don't keep loop alive |
10. Handling UDP Errors
| Source | Notes |
|---|---|
| No connection state | Errors typically arrive via error event |
| EMSGSIZE | Payload > MTU |
| Datagram delivery | Unreliable, unordered, may duplicate |