m06_task3.js 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (204) hide show
  1. package/.idea/.name +1 -0
  2. package/.idea/inspectionProfiles/Project_Default.xml +10 -0
  3. package/.idea/jsLibraryMappings.xml +6 -0
  4. package/.idea/modules.xml +8 -0
  5. package/.idea/node_lab_6.iml +12 -0
  6. package/06_task2.html +73 -0
  7. package/06_task2.js +52 -0
  8. package/06_task3.js +3 -0
  9. package/06_task4.js +3 -0
  10. package/m06_task3.js +28 -0
  11. package/package/index.js +28 -0
  12. package/package/node_modules/.package-lock.json +31 -0
  13. package/package/node_modules/@types/node/LICENSE +21 -0
  14. package/package/node_modules/@types/node/README.md +16 -0
  15. package/package/node_modules/@types/node/assert/strict.d.ts +8 -0
  16. package/package/node_modules/@types/node/assert.d.ts +961 -0
  17. package/package/node_modules/@types/node/async_hooks.d.ts +501 -0
  18. package/package/node_modules/@types/node/buffer.d.ts +2258 -0
  19. package/package/node_modules/@types/node/child_process.d.ts +1369 -0
  20. package/package/node_modules/@types/node/cluster.d.ts +410 -0
  21. package/package/node_modules/@types/node/console.d.ts +412 -0
  22. package/package/node_modules/@types/node/constants.d.ts +18 -0
  23. package/package/node_modules/@types/node/crypto.d.ts +3964 -0
  24. package/package/node_modules/@types/node/dgram.d.ts +545 -0
  25. package/package/node_modules/@types/node/diagnostics_channel.d.ts +153 -0
  26. package/package/node_modules/@types/node/dns/promises.d.ts +370 -0
  27. package/package/node_modules/@types/node/dns.d.ts +659 -0
  28. package/package/node_modules/@types/node/dom-events.d.ts +126 -0
  29. package/package/node_modules/@types/node/domain.d.ts +170 -0
  30. package/package/node_modules/@types/node/events.d.ts +678 -0
  31. package/package/node_modules/@types/node/fs/promises.d.ts +1138 -0
  32. package/package/node_modules/@types/node/fs.d.ts +3872 -0
  33. package/package/node_modules/@types/node/globals.d.ts +300 -0
  34. package/package/node_modules/@types/node/globals.global.d.ts +1 -0
  35. package/package/node_modules/@types/node/http.d.ts +1614 -0
  36. package/package/node_modules/@types/node/http2.d.ts +2134 -0
  37. package/package/node_modules/@types/node/https.d.ts +541 -0
  38. package/package/node_modules/@types/node/index.d.ts +133 -0
  39. package/package/node_modules/@types/node/inspector.d.ts +2741 -0
  40. package/package/node_modules/@types/node/module.d.ts +114 -0
  41. package/package/node_modules/@types/node/net.d.ts +869 -0
  42. package/package/node_modules/@types/node/os.d.ts +466 -0
  43. package/package/node_modules/@types/node/package.json +232 -0
  44. package/package/node_modules/@types/node/path.d.ts +191 -0
  45. package/package/node_modules/@types/node/perf_hooks.d.ts +625 -0
  46. package/package/node_modules/@types/node/process.d.ts +1482 -0
  47. package/package/node_modules/@types/node/punycode.d.ts +117 -0
  48. package/package/node_modules/@types/node/querystring.d.ts +131 -0
  49. package/package/node_modules/@types/node/readline/promises.d.ts +143 -0
  50. package/package/node_modules/@types/node/readline.d.ts +653 -0
  51. package/package/node_modules/@types/node/repl.d.ts +424 -0
  52. package/package/node_modules/@types/node/stream/consumers.d.ts +12 -0
  53. package/package/node_modules/@types/node/stream/promises.d.ts +42 -0
  54. package/package/node_modules/@types/node/stream/web.d.ts +330 -0
  55. package/package/node_modules/@types/node/stream.d.ts +1340 -0
  56. package/package/node_modules/@types/node/string_decoder.d.ts +67 -0
  57. package/package/node_modules/@types/node/test.d.ts +314 -0
  58. package/package/node_modules/@types/node/timers/promises.d.ts +68 -0
  59. package/package/node_modules/@types/node/timers.d.ts +94 -0
  60. package/package/node_modules/@types/node/tls.d.ts +1028 -0
  61. package/package/node_modules/@types/node/trace_events.d.ts +171 -0
  62. package/package/node_modules/@types/node/ts4.8/assert/strict.d.ts +8 -0
  63. package/package/node_modules/@types/node/ts4.8/assert.d.ts +961 -0
  64. package/package/node_modules/@types/node/ts4.8/async_hooks.d.ts +501 -0
  65. package/package/node_modules/@types/node/ts4.8/buffer.d.ts +2259 -0
  66. package/package/node_modules/@types/node/ts4.8/child_process.d.ts +1369 -0
  67. package/package/node_modules/@types/node/ts4.8/cluster.d.ts +410 -0
  68. package/package/node_modules/@types/node/ts4.8/console.d.ts +412 -0
  69. package/package/node_modules/@types/node/ts4.8/constants.d.ts +18 -0
  70. package/package/node_modules/@types/node/ts4.8/crypto.d.ts +3964 -0
  71. package/package/node_modules/@types/node/ts4.8/dgram.d.ts +545 -0
  72. package/package/node_modules/@types/node/ts4.8/diagnostics_channel.d.ts +153 -0
  73. package/package/node_modules/@types/node/ts4.8/dns/promises.d.ts +370 -0
  74. package/package/node_modules/@types/node/ts4.8/dns.d.ts +659 -0
  75. package/package/node_modules/@types/node/ts4.8/dom-events.d.ts +126 -0
  76. package/package/node_modules/@types/node/ts4.8/domain.d.ts +170 -0
  77. package/package/node_modules/@types/node/ts4.8/events.d.ts +678 -0
  78. package/package/node_modules/@types/node/ts4.8/fs/promises.d.ts +1138 -0
  79. package/package/node_modules/@types/node/ts4.8/fs.d.ts +3872 -0
  80. package/package/node_modules/@types/node/ts4.8/globals.d.ts +294 -0
  81. package/package/node_modules/@types/node/ts4.8/globals.global.d.ts +1 -0
  82. package/package/node_modules/@types/node/ts4.8/http.d.ts +1614 -0
  83. package/package/node_modules/@types/node/ts4.8/http2.d.ts +2134 -0
  84. package/package/node_modules/@types/node/ts4.8/https.d.ts +541 -0
  85. package/package/node_modules/@types/node/ts4.8/index.d.ts +88 -0
  86. package/package/node_modules/@types/node/ts4.8/inspector.d.ts +2741 -0
  87. package/package/node_modules/@types/node/ts4.8/module.d.ts +114 -0
  88. package/package/node_modules/@types/node/ts4.8/net.d.ts +869 -0
  89. package/package/node_modules/@types/node/ts4.8/os.d.ts +466 -0
  90. package/package/node_modules/@types/node/ts4.8/path.d.ts +191 -0
  91. package/package/node_modules/@types/node/ts4.8/perf_hooks.d.ts +625 -0
  92. package/package/node_modules/@types/node/ts4.8/process.d.ts +1482 -0
  93. package/package/node_modules/@types/node/ts4.8/punycode.d.ts +117 -0
  94. package/package/node_modules/@types/node/ts4.8/querystring.d.ts +131 -0
  95. package/package/node_modules/@types/node/ts4.8/readline/promises.d.ts +143 -0
  96. package/package/node_modules/@types/node/ts4.8/readline.d.ts +653 -0
  97. package/package/node_modules/@types/node/ts4.8/repl.d.ts +424 -0
  98. package/package/node_modules/@types/node/ts4.8/stream/consumers.d.ts +12 -0
  99. package/package/node_modules/@types/node/ts4.8/stream/promises.d.ts +42 -0
  100. package/package/node_modules/@types/node/ts4.8/stream/web.d.ts +330 -0
  101. package/package/node_modules/@types/node/ts4.8/stream.d.ts +1340 -0
  102. package/package/node_modules/@types/node/ts4.8/string_decoder.d.ts +67 -0
  103. package/package/node_modules/@types/node/ts4.8/test.d.ts +314 -0
  104. package/package/node_modules/@types/node/ts4.8/timers/promises.d.ts +68 -0
  105. package/package/node_modules/@types/node/ts4.8/timers.d.ts +94 -0
  106. package/package/node_modules/@types/node/ts4.8/tls.d.ts +1028 -0
  107. package/package/node_modules/@types/node/ts4.8/trace_events.d.ts +171 -0
  108. package/package/node_modules/@types/node/ts4.8/tty.d.ts +206 -0
  109. package/package/node_modules/@types/node/ts4.8/url.d.ts +897 -0
  110. package/package/node_modules/@types/node/ts4.8/util.d.ts +1850 -0
  111. package/package/node_modules/@types/node/ts4.8/v8.d.ts +396 -0
  112. package/package/node_modules/@types/node/ts4.8/vm.d.ts +509 -0
  113. package/package/node_modules/@types/node/ts4.8/wasi.d.ts +158 -0
  114. package/package/node_modules/@types/node/ts4.8/worker_threads.d.ts +689 -0
  115. package/package/node_modules/@types/node/ts4.8/zlib.d.ts +517 -0
  116. package/package/node_modules/@types/node/tty.d.ts +206 -0
  117. package/package/node_modules/@types/node/url.d.ts +897 -0
  118. package/package/node_modules/@types/node/util.d.ts +1850 -0
  119. package/package/node_modules/@types/node/v8.d.ts +396 -0
  120. package/package/node_modules/@types/node/vm.d.ts +509 -0
  121. package/package/node_modules/@types/node/wasi.d.ts +158 -0
  122. package/package/node_modules/@types/node/worker_threads.d.ts +689 -0
  123. package/package/node_modules/@types/node/zlib.d.ts +517 -0
  124. package/package/node_modules/@types/nodemailer/LICENSE +21 -0
  125. package/package/node_modules/@types/nodemailer/README.md +16 -0
  126. package/package/node_modules/@types/nodemailer/index.d.ts +83 -0
  127. package/package/node_modules/@types/nodemailer/lib/addressparser/index.d.ts +31 -0
  128. package/package/node_modules/@types/nodemailer/lib/base64/index.d.ts +22 -0
  129. package/package/node_modules/@types/nodemailer/lib/dkim/index.d.ts +45 -0
  130. package/package/node_modules/@types/nodemailer/lib/dkim/message-parser.d.ts +75 -0
  131. package/package/node_modules/@types/nodemailer/lib/dkim/relaxed-body.d.ts +75 -0
  132. package/package/node_modules/@types/nodemailer/lib/dkim/sign.d.ts +11 -0
  133. package/package/node_modules/@types/nodemailer/lib/fetch/cookies.d.ts +54 -0
  134. package/package/node_modules/@types/nodemailer/lib/fetch/index.d.ts +38 -0
  135. package/package/node_modules/@types/nodemailer/lib/json-transport/index.d.ts +50 -0
  136. package/package/node_modules/@types/nodemailer/lib/mail-composer/index.d.ts +25 -0
  137. package/package/node_modules/@types/nodemailer/lib/mailer/index.d.ts +230 -0
  138. package/package/node_modules/@types/nodemailer/lib/mailer/mail-message.d.ts +28 -0
  139. package/package/node_modules/@types/nodemailer/lib/mime-funcs/index.d.ts +87 -0
  140. package/package/node_modules/@types/nodemailer/lib/mime-funcs/mime-types.d.ts +2 -0
  141. package/package/node_modules/@types/nodemailer/lib/mime-node/index.d.ts +137 -0
  142. package/package/node_modules/@types/nodemailer/lib/mime-node/last-newline.d.ts +9 -0
  143. package/package/node_modules/@types/nodemailer/lib/qp/index.d.ts +23 -0
  144. package/package/node_modules/@types/nodemailer/lib/sendmail-transport/index.d.ts +53 -0
  145. package/package/node_modules/@types/nodemailer/lib/sendmail-transport/le-unix.d.ts +7 -0
  146. package/package/node_modules/@types/nodemailer/lib/sendmail-transport/le-windows.d.ts +7 -0
  147. package/package/node_modules/@types/nodemailer/lib/ses-transport/index.d.ts +136 -0
  148. package/package/node_modules/@types/nodemailer/lib/shared/index.d.ts +51 -0
  149. package/package/node_modules/@types/nodemailer/lib/smtp-connection/data-stream.d.ts +11 -0
  150. package/package/node_modules/@types/nodemailer/lib/smtp-connection/http-proxy-client.d.ts +11 -0
  151. package/package/node_modules/@types/nodemailer/lib/smtp-connection/index.d.ts +254 -0
  152. package/package/node_modules/@types/nodemailer/lib/smtp-pool/index.d.ts +90 -0
  153. package/package/node_modules/@types/nodemailer/lib/smtp-pool/pool-resource.d.ts +66 -0
  154. package/package/node_modules/@types/nodemailer/lib/smtp-transport/index.d.ts +115 -0
  155. package/package/node_modules/@types/nodemailer/lib/stream-transport/index.d.ts +56 -0
  156. package/package/node_modules/@types/nodemailer/lib/well-known/index.d.ts +6 -0
  157. package/package/node_modules/@types/nodemailer/lib/xoauth2/index.d.ts +110 -0
  158. package/package/node_modules/@types/nodemailer/package.json +37 -0
  159. package/package/node_modules/nodemailer/.gitattributes +6 -0
  160. package/package/node_modules/nodemailer/.prettierrc.js +8 -0
  161. package/package/node_modules/nodemailer/CHANGELOG.md +715 -0
  162. package/package/node_modules/nodemailer/CODE_OF_CONDUCT.md +76 -0
  163. package/package/node_modules/nodemailer/CONTRIBUTING.md +67 -0
  164. package/package/node_modules/nodemailer/LICENSE +16 -0
  165. package/package/node_modules/nodemailer/README.md +93 -0
  166. package/package/node_modules/nodemailer/SECURITY.txt +22 -0
  167. package/package/node_modules/nodemailer/lib/addressparser/index.js +313 -0
  168. package/package/node_modules/nodemailer/lib/base64/index.js +142 -0
  169. package/package/node_modules/nodemailer/lib/dkim/index.js +251 -0
  170. package/package/node_modules/nodemailer/lib/dkim/message-parser.js +155 -0
  171. package/package/node_modules/nodemailer/lib/dkim/relaxed-body.js +154 -0
  172. package/package/node_modules/nodemailer/lib/dkim/sign.js +117 -0
  173. package/package/node_modules/nodemailer/lib/fetch/cookies.js +281 -0
  174. package/package/node_modules/nodemailer/lib/fetch/index.js +269 -0
  175. package/package/node_modules/nodemailer/lib/json-transport/index.js +82 -0
  176. package/package/node_modules/nodemailer/lib/mail-composer/index.js +558 -0
  177. package/package/node_modules/nodemailer/lib/mailer/index.js +427 -0
  178. package/package/node_modules/nodemailer/lib/mailer/mail-message.js +315 -0
  179. package/package/node_modules/nodemailer/lib/mime-funcs/index.js +619 -0
  180. package/package/node_modules/nodemailer/lib/mime-funcs/mime-types.js +2102 -0
  181. package/package/node_modules/nodemailer/lib/mime-node/index.js +1290 -0
  182. package/package/node_modules/nodemailer/lib/mime-node/last-newline.js +33 -0
  183. package/package/node_modules/nodemailer/lib/mime-node/le-unix.js +43 -0
  184. package/package/node_modules/nodemailer/lib/mime-node/le-windows.js +52 -0
  185. package/package/node_modules/nodemailer/lib/nodemailer.js +143 -0
  186. package/package/node_modules/nodemailer/lib/qp/index.js +219 -0
  187. package/package/node_modules/nodemailer/lib/sendmail-transport/index.js +210 -0
  188. package/package/node_modules/nodemailer/lib/ses-transport/index.js +349 -0
  189. package/package/node_modules/nodemailer/lib/shared/index.js +639 -0
  190. package/package/node_modules/nodemailer/lib/smtp-connection/data-stream.js +108 -0
  191. package/package/node_modules/nodemailer/lib/smtp-connection/http-proxy-client.js +143 -0
  192. package/package/node_modules/nodemailer/lib/smtp-connection/index.js +1786 -0
  193. package/package/node_modules/nodemailer/lib/smtp-pool/index.js +648 -0
  194. package/package/node_modules/nodemailer/lib/smtp-pool/pool-resource.js +253 -0
  195. package/package/node_modules/nodemailer/lib/smtp-transport/index.js +416 -0
  196. package/package/node_modules/nodemailer/lib/stream-transport/index.js +135 -0
  197. package/package/node_modules/nodemailer/lib/well-known/index.js +47 -0
  198. package/package/node_modules/nodemailer/lib/well-known/services.json +286 -0
  199. package/package/node_modules/nodemailer/lib/xoauth2/index.js +376 -0
  200. package/package/node_modules/nodemailer/package.json +46 -0
  201. package/package/node_modules/nodemailer/postinstall.js +101 -0
  202. package/package/package-lock.json +60 -0
  203. package/package/package.json +6 -0
  204. package/package.json +19 -0
@@ -0,0 +1,545 @@
1
+ /**
2
+ * The `dgram` module provides an implementation of UDP datagram sockets.
3
+ *
4
+ * ```js
5
+ * import dgram from 'dgram';
6
+ *
7
+ * const server = dgram.createSocket('udp4');
8
+ *
9
+ * server.on('error', (err) => {
10
+ * console.log(`server error:\n${err.stack}`);
11
+ * server.close();
12
+ * });
13
+ *
14
+ * server.on('message', (msg, rinfo) => {
15
+ * console.log(`server got: ${msg} from ${rinfo.address}:${rinfo.port}`);
16
+ * });
17
+ *
18
+ * server.on('listening', () => {
19
+ * const address = server.address();
20
+ * console.log(`server listening ${address.address}:${address.port}`);
21
+ * });
22
+ *
23
+ * server.bind(41234);
24
+ * // Prints: server listening 0.0.0.0:41234
25
+ * ```
26
+ * @see [source](https://github.com/nodejs/node/blob/v18.0.0/lib/dgram.js)
27
+ */
28
+ declare module 'dgram' {
29
+ import { AddressInfo } from 'node:net';
30
+ import * as dns from 'node:dns';
31
+ import { EventEmitter, Abortable } from 'node:events';
32
+ interface RemoteInfo {
33
+ address: string;
34
+ family: 'IPv4' | 'IPv6';
35
+ port: number;
36
+ size: number;
37
+ }
38
+ interface BindOptions {
39
+ port?: number | undefined;
40
+ address?: string | undefined;
41
+ exclusive?: boolean | undefined;
42
+ fd?: number | undefined;
43
+ }
44
+ type SocketType = 'udp4' | 'udp6';
45
+ interface SocketOptions extends Abortable {
46
+ type: SocketType;
47
+ reuseAddr?: boolean | undefined;
48
+ /**
49
+ * @default false
50
+ */
51
+ ipv6Only?: boolean | undefined;
52
+ recvBufferSize?: number | undefined;
53
+ sendBufferSize?: number | undefined;
54
+ lookup?: ((hostname: string, options: dns.LookupOneOptions, callback: (err: NodeJS.ErrnoException | null, address: string, family: number) => void) => void) | undefined;
55
+ }
56
+ /**
57
+ * Creates a `dgram.Socket` object. Once the socket is created, calling `socket.bind()` will instruct the socket to begin listening for datagram
58
+ * messages. When `address` and `port` are not passed to `socket.bind()` the
59
+ * method will bind the socket to the "all interfaces" address on a random port
60
+ * (it does the right thing for both `udp4` and `udp6` sockets). The bound address
61
+ * and port can be retrieved using `socket.address().address` and `socket.address().port`.
62
+ *
63
+ * If the `signal` option is enabled, calling `.abort()` on the corresponding`AbortController` is similar to calling `.close()` on the socket:
64
+ *
65
+ * ```js
66
+ * const controller = new AbortController();
67
+ * const { signal } = controller;
68
+ * const server = dgram.createSocket({ type: 'udp4', signal });
69
+ * server.on('message', (msg, rinfo) => {
70
+ * console.log(`server got: ${msg} from ${rinfo.address}:${rinfo.port}`);
71
+ * });
72
+ * // Later, when you want to close the server.
73
+ * controller.abort();
74
+ * ```
75
+ * @since v0.11.13
76
+ * @param options Available options are:
77
+ * @param callback Attached as a listener for `'message'` events. Optional.
78
+ */
79
+ function createSocket(type: SocketType, callback?: (msg: Buffer, rinfo: RemoteInfo) => void): Socket;
80
+ function createSocket(options: SocketOptions, callback?: (msg: Buffer, rinfo: RemoteInfo) => void): Socket;
81
+ /**
82
+ * Encapsulates the datagram functionality.
83
+ *
84
+ * New instances of `dgram.Socket` are created using {@link createSocket}.
85
+ * The `new` keyword is not to be used to create `dgram.Socket` instances.
86
+ * @since v0.1.99
87
+ */
88
+ class Socket extends EventEmitter {
89
+ /**
90
+ * Tells the kernel to join a multicast group at the given `multicastAddress` and`multicastInterface` using the `IP_ADD_MEMBERSHIP` socket option. If the`multicastInterface` argument is not
91
+ * specified, the operating system will choose
92
+ * one interface and will add membership to it. To add membership to every
93
+ * available interface, call `addMembership` multiple times, once per interface.
94
+ *
95
+ * When called on an unbound socket, this method will implicitly bind to a random
96
+ * port, listening on all interfaces.
97
+ *
98
+ * When sharing a UDP socket across multiple `cluster` workers, the`socket.addMembership()` function must be called only once or an`EADDRINUSE` error will occur:
99
+ *
100
+ * ```js
101
+ * import cluster from 'cluster';
102
+ * import dgram from 'dgram';
103
+ *
104
+ * if (cluster.isPrimary) {
105
+ * cluster.fork(); // Works ok.
106
+ * cluster.fork(); // Fails with EADDRINUSE.
107
+ * } else {
108
+ * const s = dgram.createSocket('udp4');
109
+ * s.bind(1234, () => {
110
+ * s.addMembership('224.0.0.114');
111
+ * });
112
+ * }
113
+ * ```
114
+ * @since v0.6.9
115
+ */
116
+ addMembership(multicastAddress: string, multicastInterface?: string): void;
117
+ /**
118
+ * Returns an object containing the address information for a socket.
119
+ * For UDP sockets, this object will contain `address`, `family` and `port`properties.
120
+ *
121
+ * This method throws `EBADF` if called on an unbound socket.
122
+ * @since v0.1.99
123
+ */
124
+ address(): AddressInfo;
125
+ /**
126
+ * For UDP sockets, causes the `dgram.Socket` to listen for datagram
127
+ * messages on a named `port` and optional `address`. If `port` is not
128
+ * specified or is `0`, the operating system will attempt to bind to a
129
+ * random port. If `address` is not specified, the operating system will
130
+ * attempt to listen on all addresses. Once binding is complete, a`'listening'` event is emitted and the optional `callback` function is
131
+ * called.
132
+ *
133
+ * Specifying both a `'listening'` event listener and passing a`callback` to the `socket.bind()` method is not harmful but not very
134
+ * useful.
135
+ *
136
+ * A bound datagram socket keeps the Node.js process running to receive
137
+ * datagram messages.
138
+ *
139
+ * If binding fails, an `'error'` event is generated. In rare case (e.g.
140
+ * attempting to bind with a closed socket), an `Error` may be thrown.
141
+ *
142
+ * Example of a UDP server listening on port 41234:
143
+ *
144
+ * ```js
145
+ * import dgram from 'dgram';
146
+ *
147
+ * const server = dgram.createSocket('udp4');
148
+ *
149
+ * server.on('error', (err) => {
150
+ * console.log(`server error:\n${err.stack}`);
151
+ * server.close();
152
+ * });
153
+ *
154
+ * server.on('message', (msg, rinfo) => {
155
+ * console.log(`server got: ${msg} from ${rinfo.address}:${rinfo.port}`);
156
+ * });
157
+ *
158
+ * server.on('listening', () => {
159
+ * const address = server.address();
160
+ * console.log(`server listening ${address.address}:${address.port}`);
161
+ * });
162
+ *
163
+ * server.bind(41234);
164
+ * // Prints: server listening 0.0.0.0:41234
165
+ * ```
166
+ * @since v0.1.99
167
+ * @param callback with no parameters. Called when binding is complete.
168
+ */
169
+ bind(port?: number, address?: string, callback?: () => void): this;
170
+ bind(port?: number, callback?: () => void): this;
171
+ bind(callback?: () => void): this;
172
+ bind(options: BindOptions, callback?: () => void): this;
173
+ /**
174
+ * Close the underlying socket and stop listening for data on it. If a callback is
175
+ * provided, it is added as a listener for the `'close'` event.
176
+ * @since v0.1.99
177
+ * @param callback Called when the socket has been closed.
178
+ */
179
+ close(callback?: () => void): this;
180
+ /**
181
+ * Associates the `dgram.Socket` to a remote address and port. Every
182
+ * message sent by this handle is automatically sent to that destination. Also,
183
+ * the socket will only receive messages from that remote peer.
184
+ * Trying to call `connect()` on an already connected socket will result
185
+ * in an `ERR_SOCKET_DGRAM_IS_CONNECTED` exception. If `address` is not
186
+ * provided, `'127.0.0.1'` (for `udp4` sockets) or `'::1'` (for `udp6` sockets)
187
+ * will be used by default. Once the connection is complete, a `'connect'` event
188
+ * is emitted and the optional `callback` function is called. In case of failure,
189
+ * the `callback` is called or, failing this, an `'error'` event is emitted.
190
+ * @since v12.0.0
191
+ * @param callback Called when the connection is completed or on error.
192
+ */
193
+ connect(port: number, address?: string, callback?: () => void): void;
194
+ connect(port: number, callback: () => void): void;
195
+ /**
196
+ * A synchronous function that disassociates a connected `dgram.Socket` from
197
+ * its remote address. Trying to call `disconnect()` on an unbound or already
198
+ * disconnected socket will result in an `ERR_SOCKET_DGRAM_NOT_CONNECTED` exception.
199
+ * @since v12.0.0
200
+ */
201
+ disconnect(): void;
202
+ /**
203
+ * Instructs the kernel to leave a multicast group at `multicastAddress` using the`IP_DROP_MEMBERSHIP` socket option. This method is automatically called by the
204
+ * kernel when the socket is closed or the process terminates, so most apps will
205
+ * never have reason to call this.
206
+ *
207
+ * If `multicastInterface` is not specified, the operating system will attempt to
208
+ * drop membership on all valid interfaces.
209
+ * @since v0.6.9
210
+ */
211
+ dropMembership(multicastAddress: string, multicastInterface?: string): void;
212
+ /**
213
+ * This method throws `ERR_SOCKET_BUFFER_SIZE` if called on an unbound socket.
214
+ * @since v8.7.0
215
+ * @return the `SO_RCVBUF` socket receive buffer size in bytes.
216
+ */
217
+ getRecvBufferSize(): number;
218
+ /**
219
+ * This method throws `ERR_SOCKET_BUFFER_SIZE` if called on an unbound socket.
220
+ * @since v8.7.0
221
+ * @return the `SO_SNDBUF` socket send buffer size in bytes.
222
+ */
223
+ getSendBufferSize(): number;
224
+ /**
225
+ * By default, binding a socket will cause it to block the Node.js process from
226
+ * exiting as long as the socket is open. The `socket.unref()` method can be used
227
+ * to exclude the socket from the reference counting that keeps the Node.js
228
+ * process active. The `socket.ref()` method adds the socket back to the reference
229
+ * counting and restores the default behavior.
230
+ *
231
+ * Calling `socket.ref()` multiples times will have no additional effect.
232
+ *
233
+ * The `socket.ref()` method returns a reference to the socket so calls can be
234
+ * chained.
235
+ * @since v0.9.1
236
+ */
237
+ ref(): this;
238
+ /**
239
+ * Returns an object containing the `address`, `family`, and `port` of the remote
240
+ * endpoint. This method throws an `ERR_SOCKET_DGRAM_NOT_CONNECTED` exception
241
+ * if the socket is not connected.
242
+ * @since v12.0.0
243
+ */
244
+ remoteAddress(): AddressInfo;
245
+ /**
246
+ * Broadcasts a datagram on the socket.
247
+ * For connectionless sockets, the destination `port` and `address` must be
248
+ * specified. Connected sockets, on the other hand, will use their associated
249
+ * remote endpoint, so the `port` and `address` arguments must not be set.
250
+ *
251
+ * The `msg` argument contains the message to be sent.
252
+ * Depending on its type, different behavior can apply. If `msg` is a `Buffer`,
253
+ * any `TypedArray` or a `DataView`,
254
+ * the `offset` and `length` specify the offset within the `Buffer` where the
255
+ * message begins and the number of bytes in the message, respectively.
256
+ * If `msg` is a `String`, then it is automatically converted to a `Buffer`with `'utf8'` encoding. With messages that
257
+ * contain multi-byte characters, `offset` and `length` will be calculated with
258
+ * respect to `byte length` and not the character position.
259
+ * If `msg` is an array, `offset` and `length` must not be specified.
260
+ *
261
+ * The `address` argument is a string. If the value of `address` is a host name,
262
+ * DNS will be used to resolve the address of the host. If `address` is not
263
+ * provided or otherwise nullish, `'127.0.0.1'` (for `udp4` sockets) or `'::1'`(for `udp6` sockets) will be used by default.
264
+ *
265
+ * If the socket has not been previously bound with a call to `bind`, the socket
266
+ * is assigned a random port number and is bound to the "all interfaces" address
267
+ * (`'0.0.0.0'` for `udp4` sockets, `'::0'` for `udp6` sockets.)
268
+ *
269
+ * An optional `callback` function may be specified to as a way of reporting
270
+ * DNS errors or for determining when it is safe to reuse the `buf` object.
271
+ * DNS lookups delay the time to send for at least one tick of the
272
+ * Node.js event loop.
273
+ *
274
+ * The only way to know for sure that the datagram has been sent is by using a`callback`. If an error occurs and a `callback` is given, the error will be
275
+ * passed as the first argument to the `callback`. If a `callback` is not given,
276
+ * the error is emitted as an `'error'` event on the `socket` object.
277
+ *
278
+ * Offset and length are optional but both _must_ be set if either are used.
279
+ * They are supported only when the first argument is a `Buffer`, a `TypedArray`,
280
+ * or a `DataView`.
281
+ *
282
+ * This method throws `ERR_SOCKET_BAD_PORT` if called on an unbound socket.
283
+ *
284
+ * Example of sending a UDP packet to a port on `localhost`;
285
+ *
286
+ * ```js
287
+ * import dgram from 'dgram';
288
+ * import { Buffer } from 'buffer';
289
+ *
290
+ * const message = Buffer.from('Some bytes');
291
+ * const client = dgram.createSocket('udp4');
292
+ * client.send(message, 41234, 'localhost', (err) => {
293
+ * client.close();
294
+ * });
295
+ * ```
296
+ *
297
+ * Example of sending a UDP packet composed of multiple buffers to a port on`127.0.0.1`;
298
+ *
299
+ * ```js
300
+ * import dgram from 'dgram';
301
+ * import { Buffer } from 'buffer';
302
+ *
303
+ * const buf1 = Buffer.from('Some ');
304
+ * const buf2 = Buffer.from('bytes');
305
+ * const client = dgram.createSocket('udp4');
306
+ * client.send([buf1, buf2], 41234, (err) => {
307
+ * client.close();
308
+ * });
309
+ * ```
310
+ *
311
+ * Sending multiple buffers might be faster or slower depending on the
312
+ * application and operating system. Run benchmarks to
313
+ * determine the optimal strategy on a case-by-case basis. Generally speaking,
314
+ * however, sending multiple buffers is faster.
315
+ *
316
+ * Example of sending a UDP packet using a socket connected to a port on`localhost`:
317
+ *
318
+ * ```js
319
+ * import dgram from 'dgram';
320
+ * import { Buffer } from 'buffer';
321
+ *
322
+ * const message = Buffer.from('Some bytes');
323
+ * const client = dgram.createSocket('udp4');
324
+ * client.connect(41234, 'localhost', (err) => {
325
+ * client.send(message, (err) => {
326
+ * client.close();
327
+ * });
328
+ * });
329
+ * ```
330
+ * @since v0.1.99
331
+ * @param msg Message to be sent.
332
+ * @param offset Offset in the buffer where the message starts.
333
+ * @param length Number of bytes in the message.
334
+ * @param port Destination port.
335
+ * @param address Destination host name or IP address.
336
+ * @param callback Called when the message has been sent.
337
+ */
338
+ send(msg: string | Uint8Array | ReadonlyArray<any>, port?: number, address?: string, callback?: (error: Error | null, bytes: number) => void): void;
339
+ send(msg: string | Uint8Array | ReadonlyArray<any>, port?: number, callback?: (error: Error | null, bytes: number) => void): void;
340
+ send(msg: string | Uint8Array | ReadonlyArray<any>, callback?: (error: Error | null, bytes: number) => void): void;
341
+ send(msg: string | Uint8Array, offset: number, length: number, port?: number, address?: string, callback?: (error: Error | null, bytes: number) => void): void;
342
+ send(msg: string | Uint8Array, offset: number, length: number, port?: number, callback?: (error: Error | null, bytes: number) => void): void;
343
+ send(msg: string | Uint8Array, offset: number, length: number, callback?: (error: Error | null, bytes: number) => void): void;
344
+ /**
345
+ * Sets or clears the `SO_BROADCAST` socket option. When set to `true`, UDP
346
+ * packets may be sent to a local interface's broadcast address.
347
+ *
348
+ * This method throws `EBADF` if called on an unbound socket.
349
+ * @since v0.6.9
350
+ */
351
+ setBroadcast(flag: boolean): void;
352
+ /**
353
+ * _All references to scope in this section are referring to [IPv6 Zone Indices](https://en.wikipedia.org/wiki/IPv6_address#Scoped_literal_IPv6_addresses), which are defined by [RFC
354
+ * 4007](https://tools.ietf.org/html/rfc4007). In string form, an IP_
355
+ * _with a scope index is written as `'IP%scope'` where scope is an interface name_
356
+ * _or interface number._
357
+ *
358
+ * Sets the default outgoing multicast interface of the socket to a chosen
359
+ * interface or back to system interface selection. The `multicastInterface` must
360
+ * be a valid string representation of an IP from the socket's family.
361
+ *
362
+ * For IPv4 sockets, this should be the IP configured for the desired physical
363
+ * interface. All packets sent to multicast on the socket will be sent on the
364
+ * interface determined by the most recent successful use of this call.
365
+ *
366
+ * For IPv6 sockets, `multicastInterface` should include a scope to indicate the
367
+ * interface as in the examples that follow. In IPv6, individual `send` calls can
368
+ * also use explicit scope in addresses, so only packets sent to a multicast
369
+ * address without specifying an explicit scope are affected by the most recent
370
+ * successful use of this call.
371
+ *
372
+ * This method throws `EBADF` if called on an unbound socket.
373
+ *
374
+ * #### Example: IPv6 outgoing multicast interface
375
+ *
376
+ * On most systems, where scope format uses the interface name:
377
+ *
378
+ * ```js
379
+ * const socket = dgram.createSocket('udp6');
380
+ *
381
+ * socket.bind(1234, () => {
382
+ * socket.setMulticastInterface('::%eth1');
383
+ * });
384
+ * ```
385
+ *
386
+ * On Windows, where scope format uses an interface number:
387
+ *
388
+ * ```js
389
+ * const socket = dgram.createSocket('udp6');
390
+ *
391
+ * socket.bind(1234, () => {
392
+ * socket.setMulticastInterface('::%2');
393
+ * });
394
+ * ```
395
+ *
396
+ * #### Example: IPv4 outgoing multicast interface
397
+ *
398
+ * All systems use an IP of the host on the desired physical interface:
399
+ *
400
+ * ```js
401
+ * const socket = dgram.createSocket('udp4');
402
+ *
403
+ * socket.bind(1234, () => {
404
+ * socket.setMulticastInterface('10.0.0.2');
405
+ * });
406
+ * ```
407
+ * @since v8.6.0
408
+ */
409
+ setMulticastInterface(multicastInterface: string): void;
410
+ /**
411
+ * Sets or clears the `IP_MULTICAST_LOOP` socket option. When set to `true`,
412
+ * multicast packets will also be received on the local interface.
413
+ *
414
+ * This method throws `EBADF` if called on an unbound socket.
415
+ * @since v0.3.8
416
+ */
417
+ setMulticastLoopback(flag: boolean): boolean;
418
+ /**
419
+ * Sets the `IP_MULTICAST_TTL` socket option. While TTL generally stands for
420
+ * "Time to Live", in this context it specifies the number of IP hops that a
421
+ * packet is allowed to travel through, specifically for multicast traffic. Each
422
+ * router or gateway that forwards a packet decrements the TTL. If the TTL is
423
+ * decremented to 0 by a router, it will not be forwarded.
424
+ *
425
+ * The `ttl` argument may be between 0 and 255\. The default on most systems is `1`.
426
+ *
427
+ * This method throws `EBADF` if called on an unbound socket.
428
+ * @since v0.3.8
429
+ */
430
+ setMulticastTTL(ttl: number): number;
431
+ /**
432
+ * Sets the `SO_RCVBUF` socket option. Sets the maximum socket receive buffer
433
+ * in bytes.
434
+ *
435
+ * This method throws `ERR_SOCKET_BUFFER_SIZE` if called on an unbound socket.
436
+ * @since v8.7.0
437
+ */
438
+ setRecvBufferSize(size: number): void;
439
+ /**
440
+ * Sets the `SO_SNDBUF` socket option. Sets the maximum socket send buffer
441
+ * in bytes.
442
+ *
443
+ * This method throws `ERR_SOCKET_BUFFER_SIZE` if called on an unbound socket.
444
+ * @since v8.7.0
445
+ */
446
+ setSendBufferSize(size: number): void;
447
+ /**
448
+ * Sets the `IP_TTL` socket option. While TTL generally stands for "Time to Live",
449
+ * in this context it specifies the number of IP hops that a packet is allowed to
450
+ * travel through. Each router or gateway that forwards a packet decrements the
451
+ * TTL. If the TTL is decremented to 0 by a router, it will not be forwarded.
452
+ * Changing TTL values is typically done for network probes or when multicasting.
453
+ *
454
+ * The `ttl` argument may be between 1 and 255\. The default on most systems
455
+ * is 64.
456
+ *
457
+ * This method throws `EBADF` if called on an unbound socket.
458
+ * @since v0.1.101
459
+ */
460
+ setTTL(ttl: number): number;
461
+ /**
462
+ * By default, binding a socket will cause it to block the Node.js process from
463
+ * exiting as long as the socket is open. The `socket.unref()` method can be used
464
+ * to exclude the socket from the reference counting that keeps the Node.js
465
+ * process active, allowing the process to exit even if the socket is still
466
+ * listening.
467
+ *
468
+ * Calling `socket.unref()` multiple times will have no addition effect.
469
+ *
470
+ * The `socket.unref()` method returns a reference to the socket so calls can be
471
+ * chained.
472
+ * @since v0.9.1
473
+ */
474
+ unref(): this;
475
+ /**
476
+ * Tells the kernel to join a source-specific multicast channel at the given`sourceAddress` and `groupAddress`, using the `multicastInterface` with the`IP_ADD_SOURCE_MEMBERSHIP` socket
477
+ * option. If the `multicastInterface` argument
478
+ * is not specified, the operating system will choose one interface and will add
479
+ * membership to it. To add membership to every available interface, call`socket.addSourceSpecificMembership()` multiple times, once per interface.
480
+ *
481
+ * When called on an unbound socket, this method will implicitly bind to a random
482
+ * port, listening on all interfaces.
483
+ * @since v13.1.0, v12.16.0
484
+ */
485
+ addSourceSpecificMembership(sourceAddress: string, groupAddress: string, multicastInterface?: string): void;
486
+ /**
487
+ * Instructs the kernel to leave a source-specific multicast channel at the given`sourceAddress` and `groupAddress` using the `IP_DROP_SOURCE_MEMBERSHIP`socket option. This method is
488
+ * automatically called by the kernel when the
489
+ * socket is closed or the process terminates, so most apps will never have
490
+ * reason to call this.
491
+ *
492
+ * If `multicastInterface` is not specified, the operating system will attempt to
493
+ * drop membership on all valid interfaces.
494
+ * @since v13.1.0, v12.16.0
495
+ */
496
+ dropSourceSpecificMembership(sourceAddress: string, groupAddress: string, multicastInterface?: string): void;
497
+ /**
498
+ * events.EventEmitter
499
+ * 1. close
500
+ * 2. connect
501
+ * 3. error
502
+ * 4. listening
503
+ * 5. message
504
+ */
505
+ addListener(event: string, listener: (...args: any[]) => void): this;
506
+ addListener(event: 'close', listener: () => void): this;
507
+ addListener(event: 'connect', listener: () => void): this;
508
+ addListener(event: 'error', listener: (err: Error) => void): this;
509
+ addListener(event: 'listening', listener: () => void): this;
510
+ addListener(event: 'message', listener: (msg: Buffer, rinfo: RemoteInfo) => void): this;
511
+ emit(event: string | symbol, ...args: any[]): boolean;
512
+ emit(event: 'close'): boolean;
513
+ emit(event: 'connect'): boolean;
514
+ emit(event: 'error', err: Error): boolean;
515
+ emit(event: 'listening'): boolean;
516
+ emit(event: 'message', msg: Buffer, rinfo: RemoteInfo): boolean;
517
+ on(event: string, listener: (...args: any[]) => void): this;
518
+ on(event: 'close', listener: () => void): this;
519
+ on(event: 'connect', listener: () => void): this;
520
+ on(event: 'error', listener: (err: Error) => void): this;
521
+ on(event: 'listening', listener: () => void): this;
522
+ on(event: 'message', listener: (msg: Buffer, rinfo: RemoteInfo) => void): this;
523
+ once(event: string, listener: (...args: any[]) => void): this;
524
+ once(event: 'close', listener: () => void): this;
525
+ once(event: 'connect', listener: () => void): this;
526
+ once(event: 'error', listener: (err: Error) => void): this;
527
+ once(event: 'listening', listener: () => void): this;
528
+ once(event: 'message', listener: (msg: Buffer, rinfo: RemoteInfo) => void): this;
529
+ prependListener(event: string, listener: (...args: any[]) => void): this;
530
+ prependListener(event: 'close', listener: () => void): this;
531
+ prependListener(event: 'connect', listener: () => void): this;
532
+ prependListener(event: 'error', listener: (err: Error) => void): this;
533
+ prependListener(event: 'listening', listener: () => void): this;
534
+ prependListener(event: 'message', listener: (msg: Buffer, rinfo: RemoteInfo) => void): this;
535
+ prependOnceListener(event: string, listener: (...args: any[]) => void): this;
536
+ prependOnceListener(event: 'close', listener: () => void): this;
537
+ prependOnceListener(event: 'connect', listener: () => void): this;
538
+ prependOnceListener(event: 'error', listener: (err: Error) => void): this;
539
+ prependOnceListener(event: 'listening', listener: () => void): this;
540
+ prependOnceListener(event: 'message', listener: (msg: Buffer, rinfo: RemoteInfo) => void): this;
541
+ }
542
+ }
543
+ declare module 'node:dgram' {
544
+ export * from 'dgram';
545
+ }