@@ -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
@@ -237,6 +245,34 @@ added: v0.1.99
237
245
Close the underlying socket and stop listening for data on it. If a callback is
238
246
provided, it is added as a listener for the [ ` 'close' ` ] [ ] event.
239
247
248
+ ### socket.connect(port[ , address] [ , callback ] )
249
+ <!-- YAML
250
+ added: REPLACEME
251
+ -->
252
+
253
+ * ` port ` {integer}
254
+ * ` address ` {string}
255
+ * ` callback ` {Function} Called when the connection is completed or on error.
256
+
257
+ Associates the ` dgram.Socket ` to a remote address and port. Every
258
+ message sent by this handle is automatically sent to that destination. Also,
259
+ the socket will only receive messages from that remote peer.
260
+ Trying to call ` connect() ` on an already connected socket will result
261
+ in an [ ` ERR_SOCKET_DGRAM_IS_CONNECTED ` ] [ ] exception. If ` address ` is not
262
+ provided, ` '127.0.0.1' ` (for ` udp4 ` sockets) or ` '::1' ` (for ` udp6 ` sockets)
263
+ will be used by default. Once the connection is complete, a ` 'connect' ` event
264
+ is emitted and the optional ` callback ` function is called. In case of failure,
265
+ the ` callback ` is called or, failing this, an ` 'error' ` event is emitted.
266
+
267
+ ### socket.disconnect()
268
+ <!-- YAML
269
+ added: REPLACEME
270
+ -->
271
+
272
+ A synchronous function that disassociates a connected ` dgram.Socket ` from
273
+ its remote address. Trying to call ` disconnect() ` on an already disconnected
274
+ socket will result in an [ ` ERR_SOCKET_DGRAM_NOT_CONNECTED ` ] [ ] exception.
275
+
240
276
### socket.dropMembership(multicastAddress[ , multicastInterface] )
241
277
<!-- YAML
242
278
added: v0.6.9
@@ -283,7 +319,18 @@ Calling `socket.ref()` multiples times will have no additional effect.
283
319
The ` socket.ref() ` method returns a reference to the socket so calls can be
284
320
chained.
285
321
286
- ### socket.send(msg[ , offset, length] , port[ , address] [ , callback ] )
322
+ ### socket.remoteAddress()
323
+ <!-- YAML
324
+ added: REPLACEME
325
+ -->
326
+
327
+ * Returns: {Object}
328
+
329
+ Returns an object containing the ` address ` , ` family ` , and ` port ` of the remote
330
+ endpoint. It throws an [ ` ERR_SOCKET_DGRAM_NOT_CONNECTED ` ] [ ] exception if the
331
+ socket is not connected.
332
+
333
+ ### socket.send(msg[ , offset, length] [ , port ] [ , address] [ , callback ] )
287
334
<!-- YAML
288
335
added: v0.1.99
289
336
changes:
@@ -301,6 +348,9 @@ changes:
301
348
pr-url: https://github.com/nodejs/node/pull/4374
302
349
description: The `msg` parameter can be an array now. Also, the `offset`
303
350
and `length` parameters are optional now.
351
+ - version: REPLACEME
352
+ pr-url: https://github.com/nodejs/node/pull/26871
353
+ description: Added support for sending data on connected sockets.
304
354
-->
305
355
306
356
* ` msg ` {Buffer|Uint8Array|string|Array} Message to be sent.
@@ -310,8 +360,10 @@ changes:
310
360
* ` address ` {string} Destination hostname or IP address.
311
361
* ` callback ` {Function} Called when the message has been sent.
312
362
313
- Broadcasts a datagram on the socket. The destination ` port ` and ` address ` must
314
- be specified.
363
+ Broadcasts a datagram on the socket.
364
+ For connectionless sockets, the destination ` port ` and ` address ` must be
365
+ specified. Connected sockets, on the other hand, will use their associated
366
+ remote endpoint, so the ` port ` and ` address ` arguments must not be set.
315
367
316
368
The ` msg ` argument contains the message to be sent.
317
369
Depending on its type, different behavior can apply. If ` msg ` is a ` Buffer `
@@ -375,6 +427,20 @@ application and operating system. It is important to run benchmarks to
375
427
determine the optimal strategy on a case-by-case basis. Generally speaking,
376
428
however, sending multiple buffers is faster.
377
429
430
+ Example of sending a UDP packet using a socket connected to a port on
431
+ ` localhost ` :
432
+
433
+ ``` js
434
+ const dgram = require (' dgram' );
435
+ const message = Buffer .from (' Some bytes' );
436
+ const client = dgram .createSocket (' udp4' );
437
+ client .connect (41234 , ' localhost' , (err ) => {
438
+ client .send (message, (err ) => {
439
+ client .close ();
440
+ });
441
+ });
442
+ ```
443
+
378
444
** A Note about UDP datagram size**
379
445
380
446
The maximum size of an ` IPv4/v6 ` datagram depends on the ` MTU `
@@ -651,10 +717,13 @@ and `udp6` sockets). The bound address and port can be retrieved using
651
717
652
718
[ `'close'` ] : #dgram_event_close
653
719
[ `Error` ] : errors.html#errors_class_error
720
+ [ `ERR_SOCKET_DGRAM_IS_CONNECTED` ] : errors.html#errors_err_socket_dgram_is_connected
721
+ [ `ERR_SOCKET_DGRAM_NOT_CONNECTED` ] : errors.html#errors_err_socket_dgram_not_connected
654
722
[ `EventEmitter` ] : events.html
655
723
[ `System Error` ] : errors.html#errors_class_systemerror
656
724
[ `close()` ] : #dgram_socket_close_callback
657
725
[ `cluster` ] : cluster.html
726
+ [ `connect()` ] : #dgram_socket_connect_port_address_callback
658
727
[ `dgram.Socket#bind()` ] : #dgram_socket_bind_options_callback
659
728
[ `dgram.createSocket()` ] : #dgram_dgram_createsocket_options_callback
660
729
[ `dns.lookup()` ] : dns.html#dns_dns_lookup_hostname_options_callback
0 commit comments