@@ -49,6 +49,14 @@ added: v0.1.99
49
49
The ` 'close' ` event is emitted after a socket is closed with [ ` close() ` ] [ ] .
50
50
Once triggered, no new ` 'message' ` events will be emitted on this socket.
51
51
52
+ ### Event: 'connect'
53
+ <!-- YAML
54
+ added: REPLACEME
55
+ -->
56
+
57
+ The ` 'connect' ` event is emitted after a socket is associated to a remote
58
+ address as a result of a successful [ ` connect() ` ] [ ] call.
59
+
52
60
### Event: 'error'
53
61
<!-- YAML
54
62
added: v0.1.99
@@ -231,6 +239,34 @@ added: v0.1.99
231
239
Close the underlying socket and stop listening for data on it. If a callback is
232
240
provided, it is added as a listener for the [ ` 'close' ` ] [ ] event.
233
241
242
+ ### socket.connect(port[ , address] [ , callback ] )
243
+ <!-- YAML
244
+ added: REPLACEME
245
+ -->
246
+
247
+ * ` port ` {integer}
248
+ * ` address ` {string}
249
+ * ` callback ` {Function} Called when the connection is completed or on error.
250
+
251
+ Associates the ` dgram.Socket ` to a remote address and port. Every
252
+ message sent by this handle is automatically sent to that destination. Also,
253
+ the socket will only receive messages from that remote peer.
254
+ Trying to call ` connect() ` on an already connected socket will result
255
+ in an [ ` ERR_SOCKET_DGRAM_IS_CONNECTED ` ] [ ] exception. If ` address ` is not
256
+ provided, ` '127.0.0.1' ` (for ` udp4 ` sockets) or ` '::1' ` (for ` udp6 ` sockets)
257
+ will be used by default. Once the connection is complete, a ` 'connect' ` event
258
+ is emitted and the optional ` callback ` function is called. In case of failure,
259
+ the ` callback ` is called or, failing this, an ` 'error' ` event is emitted.
260
+
261
+ ### socket.disconnect()
262
+ <!-- YAML
263
+ added: REPLACEME
264
+ -->
265
+
266
+ A synchronous function that disassociates a connected ` dgram.Socket ` from
267
+ its remote address. Trying to call ` disconnect() ` on an already disconnected
268
+ socket will result in an [ ` ERR_SOCKET_DGRAM_NOT_CONNECTED ` ] [ ] exception.
269
+
234
270
### socket.dropMembership(multicastAddress[ , multicastInterface] )
235
271
<!-- YAML
236
272
added: v0.6.9
@@ -277,7 +313,18 @@ Calling `socket.ref()` multiples times will have no additional effect.
277
313
The ` socket.ref() ` method returns a reference to the socket so calls can be
278
314
chained.
279
315
280
- ### socket.send(msg[ , offset, length] , port[ , address] [ , callback ] )
316
+ ### socket.remoteAddress()
317
+ <!-- YAML
318
+ added: REPLACEME
319
+ -->
320
+
321
+ * Returns: {Object}
322
+
323
+ Returns an object containing the ` address ` , ` family ` , and ` port ` of the remote
324
+ endpoint. It throws an [ ` ERR_SOCKET_DGRAM_NOT_CONNECTED ` ] [ ] exception if the
325
+ socket is not connected.
326
+
327
+ ### socket.send(msg[ , offset, length] [ , port ] [ , address] [ , callback ] )
281
328
<!-- YAML
282
329
added: v0.1.99
283
330
changes:
@@ -295,6 +342,9 @@ changes:
295
342
pr-url: https://github.com/nodejs/node/pull/4374
296
343
description: The `msg` parameter can be an array now. Also, the `offset`
297
344
and `length` parameters are optional now.
345
+ - version: REPLACEME
346
+ pr-url: https://github.com/nodejs/node/pull/26871
347
+ description: Added support for sending data on connected sockets.
298
348
-->
299
349
300
350
* ` msg ` {Buffer|Uint8Array|string|Array} Message to be sent.
@@ -304,8 +354,10 @@ changes:
304
354
* ` address ` {string} Destination hostname or IP address.
305
355
* ` callback ` {Function} Called when the message has been sent.
306
356
307
- Broadcasts a datagram on the socket. The destination ` port ` and ` address ` must
308
- be specified.
357
+ Broadcasts a datagram on the socket.
358
+ For connectionless sockets, the destination ` port ` and ` address ` must be
359
+ specified. Connected sockets, on the other hand, will use their associated
360
+ remote endpoint, so the ` port ` and ` address ` arguments must not be set.
309
361
310
362
The ` msg ` argument contains the message to be sent.
311
363
Depending on its type, different behavior can apply. If ` msg ` is a ` Buffer `
@@ -369,6 +421,20 @@ application and operating system. It is important to run benchmarks to
369
421
determine the optimal strategy on a case-by-case basis. Generally speaking,
370
422
however, sending multiple buffers is faster.
371
423
424
+ Example of sending a UDP packet using a socket connected to a port on
425
+ ` localhost ` :
426
+
427
+ ``` js
428
+ const dgram = require (' dgram' );
429
+ const message = Buffer .from (' Some bytes' );
430
+ const client = dgram .createSocket (' udp4' );
431
+ client .connect (41234 , ' localhost' , (err ) => {
432
+ client .send (message, (err ) => {
433
+ client .close ();
434
+ });
435
+ });
436
+ ```
437
+
372
438
** A Note about UDP datagram size**
373
439
374
440
The maximum size of an ` IPv4/v6 ` datagram depends on the ` MTU `
@@ -639,10 +705,13 @@ and `udp6` sockets). The bound address and port can be retrieved using
639
705
640
706
[ `'close'` ] : #dgram_event_close
641
707
[ `Error` ] : errors.html#errors_class_error
708
+ [ `ERR_SOCKET_DGRAM_IS_CONNECTED` ] : errors.html#errors_err_socket_dgram_is_connected
709
+ [ `ERR_SOCKET_DGRAM_NOT_CONNECTED` ] : errors.html#errors_err_socket_dgram_not_connected
642
710
[ `EventEmitter` ] : events.html
643
711
[ `System Error` ] : errors.html#errors_class_systemerror
644
712
[ `close()` ] : #dgram_socket_close_callback
645
713
[ `cluster` ] : cluster.html
714
+ [ `connect()` ] : #dgram_socket_connect_port_address_callback
646
715
[ `dgram.Socket#bind()` ] : #dgram_socket_bind_options_callback
647
716
[ `dgram.createSocket()` ] : #dgram_dgram_createsocket_options_callback
648
717
[ `dns.lookup()` ] : dns.html#dns_dns_lookup_hostname_options_callback
0 commit comments