1 /*
2  * Copyright (c) 2021-2023 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 /**
17  * @file
18  * @kit Network Kit
19  */
20 
21 import type { AsyncCallback, Callback, ErrorCallback } from './@ohos.base';
22 import connection from "./@ohos.net.connection";
23 import type cert from './@ohos.security.cert';
24 
25 /**
26  * Provides TCP and UDP Socket APIs.
27  * @namespace socket
28  * @syscap SystemCapability.Communication.NetStack
29  * @since 7
30  */
31 /**
32  * Provides TCP and UDP Socket APIs.
33  * @namespace socket
34  * @syscap SystemCapability.Communication.NetStack
35  * @crossplatform
36  * @since 10
37  */
38 declare namespace socket {
39   export import NetAddress = connection.NetAddress;
40   /**
41    * Deposit certificate
42    * @syscap SystemCapability.Communication.NetStack
43    * @since 9
44    */
45   /**
46    * Deposit certificate
47    * @syscap SystemCapability.Communication.NetStack
48    * @crossplatform
49    * @since 10
50    */
51   export type X509CertRawData = cert.EncodingBlob;
52 
53   /**
54    * Creates a UDPSocket object.
55    * @returns { UDPSocket } the UDPSocket of the constructUDPSocketInstance.
56    * @syscap SystemCapability.Communication.NetStack
57    * @since 7
58    */
59   /**
60    * Creates a UDPSocket object.
61    * @returns { UDPSocket } the UDPSocket of the constructUDPSocketInstance.
62    * @syscap SystemCapability.Communication.NetStack
63    * @crossplatform
64    * @since 10
65    */
66   function constructUDPSocketInstance(): UDPSocket;
67 
68   /**
69    * Creates a MulticastSocket object.
70    * @returns { MulticastSocket } the MulticastSocket of the constructMulticastSocketInstance.
71    * @syscap SystemCapability.Communication.NetStack
72    * @since 11
73    */
74   function constructMulticastSocketInstance(): MulticastSocket;
75 
76   /**
77    * Creates a TCPSocket object.
78    * @returns { TCPSocket } the TCPSocket of the constructTCPSocketInstance.
79    * @syscap SystemCapability.Communication.NetStack
80    * @since 7
81    */
82   /**
83    * Creates a TCPSocket object.
84    * @returns { TCPSocket } the TCPSocket of the constructTCPSocketInstance.
85    * @syscap SystemCapability.Communication.NetStack
86    * @crossplatform
87    * @since 10
88    */
89   function constructTCPSocketInstance(): TCPSocket;
90 
91   /**
92    * Creates a TLSSocket object.
93    * @returns { TLSSocket } the TLSSocket of the constructTLSSocketInstance.
94    * @syscap SystemCapability.Communication.NetStack
95    * @since 9
96    */
97   /**
98    * Creates a TLSSocket object.
99    * @returns { TLSSocket } the TLSSocket of the constructTLSSocketInstance.
100    * @syscap SystemCapability.Communication.NetStack
101    * @crossplatform
102    * @since 10
103    */
104   function constructTLSSocketInstance(): TLSSocket;
105 
106   /**
107    * Creates a TCPSocketServer object.
108    * @returns { TCPSocketServer } the TCPSocketServer of the constructTCPSocketServerInstance.
109    * @syscap SystemCapability.Communication.NetStack
110    * @since 10
111    */
112   function constructTCPSocketServerInstance(): TCPSocketServer;
113 
114   /**
115    * Creates a TLSSocketServer object.
116    * @returns { TLSSocketServer } the TLSSocketServer of the constructTLSSocketServerInstance.
117    * @syscap SystemCapability.Communication.NetStack
118    * @since 10
119    */
120   function constructTLSSocketServerInstance(): TLSSocketServer;
121 
122   /**
123    * Defines the parameters for sending data over the UDPSocket connection.
124    * @interface UDPSendOptions
125    * @syscap SystemCapability.Communication.NetStack
126    * @since 7
127    */
128   /**
129    * Defines the parameters for sending data over the UDPSocket connection.
130    * @interface UDPSendOptions
131    * @syscap SystemCapability.Communication.NetStack
132    * @crossplatform
133    * @since 10
134    */
135   export interface UDPSendOptions {
136     /**
137      * Data to send.
138      * @type {string | ArrayBuffer}
139      * @syscap SystemCapability.Communication.NetStack
140      * @since 7
141      */
142     /**
143      * Data to send.
144      * @type {string | ArrayBuffer}
145      * @syscap SystemCapability.Communication.NetStack
146      * @crossplatform
147      * @since 10
148      */
149     data: string | ArrayBuffer;
150 
151     /**
152      * Destination address.
153      * @type {NetAddress}
154      * @syscap SystemCapability.Communication.NetStack
155      * @since 7
156      */
157     /**
158      * Destination address.
159      * @type {NetAddress}
160      * @syscap SystemCapability.Communication.NetStack
161      * @crossplatform
162      * @since 10
163      */
164     address: NetAddress;
165   }
166 
167   /**
168    * @interface ExtraOptionsBase
169    * @syscap SystemCapability.Communication.NetStack
170    * @since 7
171    */
172   /**
173    * @interface ExtraOptionsBase
174    * @syscap SystemCapability.Communication.NetStack
175    * @crossplatform
176    * @since 10
177    */
178   export interface ExtraOptionsBase {
179     /**
180      * Size of the receive buffer, in MBS.
181      * @type {?number}
182      * @syscap SystemCapability.Communication.NetStack
183      * @since 7
184      */
185     /**
186      * Size of the receive buffer, in MBS.
187      * @type {?number}
188      * @syscap SystemCapability.Communication.NetStack
189      * @crossplatform
190      * @since 10
191      */
192     receiveBufferSize?: number;
193 
194     /**
195      * Size of the send buffer, in MBS.
196      * @type {?number}
197      * @syscap SystemCapability.Communication.NetStack
198      * @since 7
199      */
200     /**
201      * Size of the send buffer, in MBS.
202      * @type {?number}
203      * @syscap SystemCapability.Communication.NetStack
204      * @crossplatform
205      * @since 10
206      */
207     sendBufferSize?: number;
208 
209     /**
210      * Whether to reuse addresses. The default value is false.
211      * @type {?boolean}
212      * @syscap SystemCapability.Communication.NetStack
213      * @since 7
214      */
215     /**
216      * Whether to reuse addresses. The default value is false.
217      * @type {?boolean}
218      * @syscap SystemCapability.Communication.NetStack
219      * @crossplatform
220      * @since 10
221      */
222     reuseAddress?: boolean;
223 
224     /**
225      * Timeout duration of the UDPSocket connection, in milliseconds.
226      * @type {?number}
227      * @syscap SystemCapability.Communication.NetStack
228      * @since 7
229      */
230     /**
231      * Timeout duration of the UDPSocket connection, in milliseconds.
232      * @type {?number}
233      * @syscap SystemCapability.Communication.NetStack
234      * @crossplatform
235      * @since 10
236      */
237     socketTimeout?: number;
238   }
239 
240   /**
241    * Defines other properties of the UDPSocket connection.
242    * @interface UDPExtraOptions
243    * @syscap SystemCapability.Communication.NetStack
244    * @since 7
245    */
246   /**
247    * Defines other properties of the UDPSocket connection.
248    * @interface UDPExtraOptions
249    * @syscap SystemCapability.Communication.NetStack
250    * @crossplatform
251    * @since 10
252    */
253   export interface UDPExtraOptions extends ExtraOptionsBase {
254     /**
255      * Whether to send broadcast messages. The default value is false.
256      * @type {?boolean}
257      * @syscap SystemCapability.Communication.NetStack
258      * @since 7
259      */
260     /**
261      * Whether to send broadcast messages. The default value is false.
262      * @type {?boolean}
263      * @syscap SystemCapability.Communication.NetStack
264      * @crossplatform
265      * @since 10
266      */
267     broadcast?: boolean;
268   }
269 
270   /**
271    * Defines the status of the socket connection.
272    * @interface SocketStateBase
273    * @syscap SystemCapability.Communication.NetStack
274    * @since 7
275    */
276   /**
277    * Defines the status of the socket connection.
278    * @interface SocketStateBase
279    * @syscap SystemCapability.Communication.NetStack
280    * @crossplatform
281    * @since 10
282    */
283   export interface SocketStateBase {
284     /**
285      * Whether the connection is in the bound state.
286      * @type {boolean}
287      * @syscap SystemCapability.Communication.NetStack
288      * @since 7
289      */
290     /**
291      * Whether the connection is in the bound state.
292      * @type {boolean}
293      * @syscap SystemCapability.Communication.NetStack
294      * @crossplatform
295      * @since 10
296      */
297     isBound: boolean;
298 
299     /**
300      * Whether the connection is in the closed state.
301      * @type {boolean}
302      * @syscap SystemCapability.Communication.NetStack
303      * @since 7
304      */
305     /**
306      * Whether the connection is in the closed state.
307      * @type {boolean}
308      * @syscap SystemCapability.Communication.NetStack
309      * @crossplatform
310      * @since 10
311      */
312     isClose: boolean;
313 
314     /**
315      * Whether the connection is in the connected state.
316      * @type {boolean}
317      * @syscap SystemCapability.Communication.NetStack
318      * @since 7
319      */
320     /**
321      * Whether the connection is in the connected state.
322      * @type {boolean}
323      * @syscap SystemCapability.Communication.NetStack
324      * @crossplatform
325      * @since 10
326      */
327     isConnected: boolean;
328   }
329 
330   /**
331    * Defines information about the socket connection.
332    * @interface SocketRemoteInfo
333    * @syscap SystemCapability.Communication.NetStack
334    * @since 7
335    */
336   /**
337    * Defines information about the socket connection.
338    * @interface SocketRemoteInfo
339    * @syscap SystemCapability.Communication.NetStack
340    * @crossplatform
341    * @since 10
342    */
343   export interface SocketRemoteInfo {
344     /**
345      * Bound IP address.
346      * @type {string}
347      * @syscap SystemCapability.Communication.NetStack
348      * @since 7
349      */
350     /**
351      * Bound IP address.
352      * @type {string}
353      * @syscap SystemCapability.Communication.NetStack
354      * @crossplatform
355      * @since 10
356      */
357     address: string;
358 
359     /**
360      * Network protocol type. The options are as follows: IPv4, IPv6.
361      * @type {'IPv4' | 'IPv6'}
362      * @syscap SystemCapability.Communication.NetStack
363      * @since 7
364      */
365     /**
366      * Network protocol type. The options are as follows: IPv4, IPv6.
367      * @type {'IPv4' | 'IPv6'}
368      * @syscap SystemCapability.Communication.NetStack
369      * @crossplatform
370      * @since 10
371      */
372     family: 'IPv4' | 'IPv6';
373 
374     /**
375      * Port number. The value ranges from 0 to 65535.
376      * @type {number}
377      * @syscap SystemCapability.Communication.NetStack
378      * @since 7
379      */
380     /**
381      * Port number. The value ranges from 0 to 65535.
382      * @type {number}
383      * @syscap SystemCapability.Communication.NetStack
384      * @crossplatform
385      * @since 10
386      */
387     port: number;
388 
389     /**
390      * Length of the server response message, in bytes.
391      * @type {number}
392      * @syscap SystemCapability.Communication.NetStack
393      * @since 7
394      */
395     /**
396      * Length of the server response message, in bytes.
397      * @type {number}
398      * @syscap SystemCapability.Communication.NetStack
399      * @crossplatform
400      * @since 10
401      */
402     size: number;
403   }
404 
405   /**
406    * Defines a UDPSocket connection.
407    * @interface UDPSocket
408    * @syscap SystemCapability.Communication.NetStack
409    * @since 7
410    */
411   /**
412    * Defines a UDPSocket connection.
413    * @interface UDPSocket
414    * @syscap SystemCapability.Communication.NetStack
415    * @crossplatform
416    * @since 10
417    */
418   export interface UDPSocket {
419     /**
420      * Binds the IP address and port number. The port number can be specified or randomly allocated by the system.
421      * @permission ohos.permission.INTERNET
422      * @param { NetAddress } address - Destination address. {@link NetAddress}
423      * @param { AsyncCallback<void> } callback - the callback of bind.
424      * @throws { BusinessError } 401 - Parameter error.
425      * @throws { BusinessError } 201 - Permission denied.
426      * @syscap SystemCapability.Communication.NetStack
427      * @since 7
428      */
429     /**
430      * Binds the IP address and port number. The port number can be specified or randomly allocated by the system.
431      * @permission ohos.permission.INTERNET
432      * @param { NetAddress } address - Destination address. {@link NetAddress}
433      * @param { AsyncCallback<void> } callback - the callback of bind.
434      * @throws { BusinessError } 401 - Parameter error.
435      * @throws { BusinessError } 201 - Permission denied.
436      * @syscap SystemCapability.Communication.NetStack
437      * @crossplatform
438      * @since 10
439      */
440     bind(address: NetAddress, callback: AsyncCallback<void>): void;
441 
442     /**
443      * Binds the IP address and port number. The port number can be specified or randomly allocated by the system.
444      * @permission ohos.permission.INTERNET
445      * @param { NetAddress } address - Destination address. {@link NetAddress}
446      * @returns { Promise<void> } The promise returned by the function.
447      * @throws { BusinessError } 401 - Parameter error.
448      * @throws { BusinessError } 201 - Permission denied.
449      * @syscap SystemCapability.Communication.NetStack
450      * @since 7
451      */
452     /**
453      * Binds the IP address and port number. The port number can be specified or randomly allocated by the system.
454      * @permission ohos.permission.INTERNET
455      * @param { NetAddress } address - Destination address. {@link NetAddress}
456      * @returns { Promise<void> } The promise returned by the function.
457      * @throws { BusinessError } 401 - Parameter error.
458      * @throws { BusinessError } 201 - Permission denied.
459      * @syscap SystemCapability.Communication.NetStack
460      * @crossplatform
461      * @since 10
462      */
463     bind(address: NetAddress): Promise<void>;
464 
465     /**
466      * Sends data over a UDPSocket connection.
467      * @permission ohos.permission.INTERNET
468      * @param { UDPSendOptions } options - Optional parameters {@link UDPSendOptions}.
469      * @param { AsyncCallback<void> } callback - the callback of send.
470      * @throws { BusinessError } 401 - Parameter error.
471      * @throws { BusinessError } 201 - Permission denied.
472      * @syscap SystemCapability.Communication.NetStack
473      * @since 7
474      */
475     /**
476      * Sends data over a UDPSocket connection.
477      * @permission ohos.permission.INTERNET
478      * @param { UDPSendOptions } options - Optional parameters {@link UDPSendOptions}.
479      * @param { AsyncCallback<void> } callback - the callback of send.
480      * @throws { BusinessError } 401 - Parameter error.
481      * @throws { BusinessError } 201 - Permission denied.
482      * @syscap SystemCapability.Communication.NetStack
483      * @crossplatform
484      * @since 10
485      */
486     send(options: UDPSendOptions, callback: AsyncCallback<void>): void;
487 
488     /**
489      * Sends data over a UDPSocket connection.
490      * @permission ohos.permission.INTERNET
491      * @param { UDPSendOptions } options - Optional parameters {@link UDPSendOptions}.
492      * @returns { Promise<void> } The promise returned by the function.
493      * @throws { BusinessError } 401 - Parameter error.
494      * @throws { BusinessError } 201 - Permission denied.
495      * @syscap SystemCapability.Communication.NetStack
496      * @since 7
497      */
498     /**
499      * Sends data over a UDPSocket connection.
500      * @permission ohos.permission.INTERNET
501      * @param { UDPSendOptions } options - Optional parameters {@link UDPSendOptions}.
502      * @returns { Promise<void> } The promise returned by the function.
503      * @throws { BusinessError } 401 - Parameter error.
504      * @throws { BusinessError } 201 - Permission denied.
505      * @syscap SystemCapability.Communication.NetStack
506      * @crossplatform
507      * @since 10
508      */
509     send(options: UDPSendOptions): Promise<void>;
510 
511     /**
512      * Closes a UDPSocket connection.
513      * @permission ohos.permission.INTERNET
514      * @param { AsyncCallback<void> } callback - the callback of close.
515      * @throws { BusinessError } 201 - Permission denied.
516      * @syscap SystemCapability.Communication.NetStack
517      * @since 7
518      */
519     /**
520      * Closes a UDPSocket connection.
521      * @permission ohos.permission.INTERNET
522      * @param { AsyncCallback<void> } callback - the callback of close.
523      * @throws { BusinessError } 201 - Permission denied.
524      * @syscap SystemCapability.Communication.NetStack
525      * @crossplatform
526      * @since 10
527      */
528     close(callback: AsyncCallback<void>): void;
529 
530     /**
531      * Closes a UDPSocket connection.
532      * @permission ohos.permission.INTERNET
533      * @returns { Promise<void> } The promise returned by the function.
534      * @throws { BusinessError } 201 - Permission denied.
535      * @syscap SystemCapability.Communication.NetStack
536      * @since 7
537      */
538     /**
539      * Closes a UDPSocket connection.
540      * @permission ohos.permission.INTERNET
541      * @returns { Promise<void> } The promise returned by the function.
542      * @throws { BusinessError } 201 - Permission denied.
543      * @syscap SystemCapability.Communication.NetStack
544      * @crossplatform
545      * @since 10
546      */
547     close(): Promise<void>;
548 
549     /**
550      * Obtains the status of the UDPSocket connection.
551      * @permission ohos.permission.INTERNET
552      * @param { AsyncCallback<SocketStateBase> } callback - the callback of getState. {@link SocketStateBase}.
553      * @throws { BusinessError } 201 - Permission denied.
554      * @syscap SystemCapability.Communication.NetStack
555      * @since 7
556      */
557     /**
558      * Obtains the status of the UDPSocket connection.
559      * @permission ohos.permission.INTERNET
560      * @param { AsyncCallback<SocketStateBase> } callback - the callback of getState. {@link SocketStateBase}.
561      * @throws { BusinessError } 201 - Permission denied.
562      * @syscap SystemCapability.Communication.NetStack
563      * @crossplatform
564      * @since 10
565      */
566     getState(callback: AsyncCallback<SocketStateBase>): void;
567 
568     /**
569      * Obtains the status of the UDPSocket connection.
570      * @permission ohos.permission.INTERNET
571      * @returns { Promise<SocketStateBase> } The promise returned by the function.
572      * @throws { BusinessError } 201 - Permission denied.
573      * @syscap SystemCapability.Communication.NetStack
574      * @since 7
575      */
576     /**
577      * Obtains the status of the UDPSocket connection.
578      * @permission ohos.permission.INTERNET
579      * @returns { Promise<SocketStateBase> } The promise returned by the function.
580      * @throws { BusinessError } 201 - Permission denied.
581      * @syscap SystemCapability.Communication.NetStack
582      * @crossplatform
583      * @since 10
584      */
585     getState(): Promise<SocketStateBase>;
586 
587     /**
588      * Sets other attributes of the UDPSocket connection.
589      * @permission ohos.permission.INTERNET
590      * @param { UDPExtraOptions } options - Optional parameters {@link UDPExtraOptions}.
591      * @param { AsyncCallback<void> }callback - the callback of setExtraOptions.
592      * @throws { BusinessError } 401 - Parameter error.
593      * @throws { BusinessError } 201 - Permission denied.
594      * @syscap SystemCapability.Communication.NetStack
595      * @since 7
596      */
597     /**
598      * Sets other attributes of the UDPSocket connection.
599      * @permission ohos.permission.INTERNET
600      * @param { UDPExtraOptions } options - Optional parameters {@link UDPExtraOptions}.
601      * @param { AsyncCallback<void> }callback - the callback of setExtraOptions.
602      * @throws { BusinessError } 401 - Parameter error.
603      * @throws { BusinessError } 201 - Permission denied.
604      * @syscap SystemCapability.Communication.NetStack
605      * @crossplatform
606      * @since 10
607      */
608     setExtraOptions(options: UDPExtraOptions, callback: AsyncCallback<void>): void;
609 
610     /**
611      * Sets other attributes of the UDPSocket connection.
612      * @permission ohos.permission.INTERNET
613      * @param { UDPExtraOptions } options - Optional parameters {@link UDPExtraOptions}.
614      * @returns { Promise<void> } The promise returned by the function.
615      * @throws { BusinessError } 401 - Parameter error.
616      * @throws { BusinessError } 201 - Permission denied.
617      * @syscap SystemCapability.Communication.NetStack
618      * @since 7
619      */
620     /**
621      * Sets other attributes of the UDPSocket connection.
622      * @permission ohos.permission.INTERNET
623      * @param { UDPExtraOptions } options - Optional parameters {@link UDPExtraOptions}.
624      * @returns { Promise<void> } The promise returned by the function.
625      * @throws { BusinessError } 401 - Parameter error.
626      * @throws { BusinessError } 201 - Permission denied.
627      * @syscap SystemCapability.Communication.NetStack
628      * @crossplatform
629      * @since 10
630      */
631     setExtraOptions(options: UDPExtraOptions): Promise<void>;
632 
633     /**
634      * Listens for message receiving events of the UDPSocket connection.
635      * @param { 'message' } type - Indicates Event name.
636      * @param { Callback<{ message: ArrayBuffer, remoteInfo: SocketRemoteInfo }> } callback - the callback used to return the result.
637      * @syscap SystemCapability.Communication.NetStack
638      * @since 7
639      */
640     /**
641      * Listens for message receiving events of the UDPSocket connection.
642      * @param { 'message' } type - Indicates Event name.
643      * @param { Callback<{ message: ArrayBuffer, remoteInfo: SocketRemoteInfo }> } callback - the callback used to return the result.
644      * @syscap SystemCapability.Communication.NetStack
645      * @crossplatform
646      * @since 10
647      */
648     on(type: 'message', callback: Callback<{ message: ArrayBuffer, remoteInfo: SocketRemoteInfo }>): void;
649 
650     /**
651      * Cancels listening for message receiving events of the UDPSocket connection.
652      * @param { 'message' } type - Indicates Event name.
653      * @param { Callback<{ message: ArrayBuffer, remoteInfo: SocketRemoteInfo }> } callback - the callback used to return the result.
654      * @syscap SystemCapability.Communication.NetStack
655      * @since 7
656      */
657     /**
658      * Cancels listening for message receiving events of the UDPSocket connection.
659      * @param { 'message' } type - Indicates Event name.
660      * @param { Callback<{ message: ArrayBuffer, remoteInfo: SocketRemoteInfo }> } callback - the callback used to return the result.
661      * @syscap SystemCapability.Communication.NetStack
662      * @crossplatform
663      * @since 10
664      */
665     off(type: 'message', callback?: Callback<{ message: ArrayBuffer, remoteInfo: SocketRemoteInfo }>): void;
666 
667     /**
668      * Listens for data packet message events or close events of the UDPSocket connection.
669      * @param { 'listening' | 'close' } type - Indicates Event name.
670      * @param { Callback<void> } callback - the callback used to return the result.
671      * @syscap SystemCapability.Communication.NetStack
672      * @since 7
673      */
674     /**
675      * Listens for data packet message events or close events of the UDPSocket connection.
676      * @param { 'listening' | 'close' } type - Indicates Event name.
677      * @param { Callback<void> } callback - the callback used to return the result.
678      * @syscap SystemCapability.Communication.NetStack
679      * @crossplatform
680      * @since 10
681      */
682     on(type: 'listening' | 'close', callback: Callback<void>): void;
683 
684     /**
685      * Cancels listening for data packet message events or close events of the UDPSocket connection.
686      * @param { 'listening' | 'close' } type - Indicates Event name.
687      * @param { Callback<void> } callback - the callback used to return the result.
688      * @syscap SystemCapability.Communication.NetStack
689      * @since 7
690      */
691     /**
692      * Cancels listening for data packet message events or close events of the UDPSocket connection.
693      * @param { 'listening' | 'close' } type - Indicates Event name.
694      * @param { Callback<void> } callback - the callback used to return the result.
695      * @syscap SystemCapability.Communication.NetStack
696      * @crossplatform
697      * @since 10
698      */
699     off(type: 'listening' | 'close', callback?: Callback<void>): void;
700 
701     /**
702      * Listens for error events of the UDPSocket connection.
703      * @param { 'error' } type - Indicates Event name.
704      * @param { ErrorCallback } callback - the callback used to return the result.
705      * @syscap SystemCapability.Communication.NetStack
706      * @since 7
707      */
708     /**
709      * Listens for error events of the UDPSocket connection.
710      * @param { 'error' } type - Indicates Event name.
711      * @param { ErrorCallback } callback - the callback used to return the result.
712      * @syscap SystemCapability.Communication.NetStack
713      * @crossplatform
714      * @since 10
715      */
716     on(type: 'error', callback: ErrorCallback): void;
717 
718     /**
719      * Cancels listening for error events of the UDPSocket connection.
720      * @param { 'error' } type - Indicates Event name.
721      * @param { ErrorCallback } callback - the callback used to return the result.
722      * @syscap SystemCapability.Communication.NetStack
723      * @since 7
724      */
725     /**
726      * Cancels listening for error events of the UDPSocket connection.
727      * @param { 'error' } type - Indicates Event name.
728      * @param { ErrorCallback } callback - the callback used to return the result.
729      * @syscap SystemCapability.Communication.NetStack
730      * @crossplatform
731      * @since 10
732      */
733     off(type: 'error', callback?: ErrorCallback): void;
734   }
735 
736   /**
737    * Defines a UDP MulticastSocket connection.
738    * @interface MulticastSocket
739    * @syscap SystemCapability.Communication.NetStack
740    * @since 11
741    */
742   export interface MulticastSocket extends UDPSocket {
743     /**
744      * Add the socket to the multicast group.
745      * @permission ohos.permission.INTERNET
746      * @param { NetAddress } multicastAddress - Multicast address information. {@link NetAddress}.
747      * @param { AsyncCallback<void> } callback - The callback of addMembership.
748      * @throws { BusinessError } 201 - Permission denied.
749      * @throws { BusinessError } 401 - Parameter error.
750      * @throws { BusinessError } 2301022 - Invalid argument.
751      * @throws { BusinessError } 2301088 - Not a socket.
752      * @throws { BusinessError } 2301098 - Address in use.
753      * @syscap SystemCapability.Communication.NetStack
754      * @since 11
755      */
756     addMembership(multicastAddress: NetAddress, callback: AsyncCallback<void>): void;
757 
758     /**
759      * Add the socket to the multicast group.
760      * @permission ohos.permission.INTERNET
761      * @param { NetAddress } multicastAddress - Multicast address information. {@link NetAddress}.
762      * @returns { Promise<void> } The promise returned by the function.
763      * @throws { BusinessError } 201 - Permission denied.
764      * @throws { BusinessError } 401 - Parameter error.
765      * @throws { BusinessError } 2301088 - Not a socket.
766      * @throws { BusinessError } 2301098 - Address in use.
767      * @syscap SystemCapability.Communication.NetStack
768      * @since 11
769      */
770     addMembership(multicastAddress: NetAddress): Promise<void>;
771 
772     /**
773      * Drop the socket from the multicast group.
774      * @permission ohos.permission.INTERNET
775      * @param { NetAddress } multicastAddress - Multicast address information. {@link NetAddress}.
776      * @param { AsyncCallback<void> } callback - The callback of dropMembership.
777      * @throws { BusinessError } 201 - Permission denied.
778      * @throws { BusinessError } 401 - Parameter error.
779      * @throws { BusinessError } 2301088 - Not a socket.
780      * @throws { BusinessError } 2301098 - Address in use.
781      * @syscap SystemCapability.Communication.NetStack
782      * @since 11
783      */
784     dropMembership(multicastAddress: NetAddress, callback: AsyncCallback<void>): void;
785 
786     /**
787      * Drop the socket from the multicast group.
788      * @permission ohos.permission.INTERNET
789      * @param { NetAddress } multicastAddress - Multicast address information. {@link NetAddress}.
790      * @returns { Promise<void> } The promise returned by the function.
791      * @throws { BusinessError } 201 - Permission denied.
792      * @throws { BusinessError } 401 - Parameter error.
793      * @throws { BusinessError } 2301088 - Not a socket.
794      * @throws { BusinessError } 2301098 - Address in use.
795      * @syscap SystemCapability.Communication.NetStack
796      * @since 11
797      */
798     dropMembership(multicastAddress: NetAddress): Promise<void>;
799 
800     /**
801      * Set the TTL value for socket multicast packets.
802      * @param { number } ttl - The TTL value to set. Valid range is typically 0 to 255.
803      * @param { AsyncCallback<void> } callback - The callback of setMulticastTTL.
804      * @throws { BusinessError } 401 - Parameter error.
805      * @throws { BusinessError } 2301022 - Invalid argument.
806      * @throws { BusinessError } 2301088 - Not a socket.
807      * @syscap SystemCapability.Communication.NetStack
808      * @since 11
809      */
810     setMulticastTTL(ttl: number, callback: AsyncCallback<void>): void;
811 
812     /**
813      * Set the TTL value for socket multicast packet.
814      * @param { number } ttl - The TTL value to set. Valid range is typically 0 to 255.
815      * @returns { Promise<void> } The promise returned by the function.
816      * @throws { BusinessError } 401 - Parameter error.
817      * @throws { BusinessError } 2301022 - Invalid argument.
818      * @throws { BusinessError } 2301088 - Not a socket.
819      * @syscap SystemCapability.Communication.NetStack
820      * @since 11
821      */
822     setMulticastTTL(ttl: number): Promise<void>;
823 
824     /**
825      * Get the TTL value of socket multicast packet.
826      * @param { AsyncCallback<number> } callback - The callback of getMulticastTTL.
827      * @throws { BusinessError } 401 - Parameter error.
828      * @throws { BusinessError } 2301088 - Not a socket.
829      * @syscap SystemCapability.Communication.NetStack
830      * @since 11
831      */
832     getMulticastTTL(callback: AsyncCallback<number>): void;
833 
834     /**
835      * Get the TTL value of socket multicast packet.
836      * @returns { Promise<number> } The promise returned by the function.
837      * @throws { BusinessError } 401 - Parameter error.
838      * @throws { BusinessError } 2301088 - Not a socket.
839      * @syscap SystemCapability.Communication.NetStack
840      * @since 11
841      */
842     getMulticastTTL(): Promise<number>;
843 
844     /**
845      * Set the loopback mode for the socket.
846      * @param { boolean } flag - Whether to enable loopback mode.
847      * @param { AsyncCallback<void> } callback - The callback of setLoopbackMode.
848      * @throws { BusinessError } 401 - Parameter error.
849      * @throws { BusinessError } 2301088 - Not a socket.
850      * @syscap SystemCapability.Communication.NetStack
851      * @since 11
852      */
853     setLoopbackMode(flag: boolean, callback: AsyncCallback<void>): void;
854 
855     /**
856      * Set the loopback mode for the socket.
857      * @param { boolean } flag - Whether to enable loopback mode.
858      * @returns { Promise<void> } The promise returned by the function.
859      * @throws { BusinessError } 401 - Parameter error.
860      * @throws { BusinessError } 2301088 - Not a socket.
861      * @syscap SystemCapability.Communication.NetStack
862      * @since 11
863      */
864     setLoopbackMode(flag: boolean): Promise<void>;
865 
866     /**
867      * Get the loopback mode of the socket.
868      * @param { AsyncCallback<boolean> } callback - The callback of getLoopbackMode.
869      * @throws { BusinessError } 401 - Parameter error.
870      * @throws { BusinessError } 2301088 - Not a socket.
871      * @syscap SystemCapability.Communication.NetStack
872      * @since 11
873      */
874     getLoopbackMode(callback: AsyncCallback<boolean>): void;
875 
876     /**
877      * Get the loopback mode of the socket.
878      * @returns { Promise<boolean> } The promise returned by the function.
879      * @throws { BusinessError } 401 - Parameter error.
880      * @throws { BusinessError } 2301088 - Not a socket.
881      * @syscap SystemCapability.Communication.NetStack
882      * @since 11
883      */
884     getLoopbackMode(): Promise<boolean>;
885   }
886 
887   /**
888    * Defines TCPSocket connection parameters.
889    * @interface TCPConnectOptions
890    * @syscap SystemCapability.Communication.NetStack
891    * @since 7
892    */
893   /**
894    * Defines TCPSocket connection parameters.
895    * @interface TCPConnectOptions
896    * @syscap SystemCapability.Communication.NetStack
897    * @crossplatform
898    * @since 10
899    */
900   export interface TCPConnectOptions {
901     /**
902      * Bound IP address and port number.
903      * @type { NetAddress }
904      * @syscap SystemCapability.Communication.NetStack
905      * @since 7
906      */
907     /**
908      * Bound IP address and port number.
909      * @type { NetAddress }
910      * @syscap SystemCapability.Communication.NetStack
911      * @crossplatform
912      * @since 10
913      */
914     address: NetAddress;
915 
916     /**
917      * Timeout duration of the TCPSocket connection, in milliseconds.
918      * @type { ?number }
919      * @syscap SystemCapability.Communication.NetStack
920      * @since 7
921      */
922     /**
923      * Timeout duration of the TCPSocket connection, in milliseconds.
924      * @type { ?number }
925      * @syscap SystemCapability.Communication.NetStack
926      * @crossplatform
927      * @since 10
928      */
929     timeout?: number;
930   }
931 
932   /**
933    * Defines the parameters for sending data over the TCPSocket connection.
934    * @interface TCPSendOptions
935    * @syscap SystemCapability.Communication.NetStack
936    * @since 7
937    */
938   /**
939    * Defines the parameters for sending data over the TCPSocket connection.
940    * @interface TCPSendOptions
941    * @syscap SystemCapability.Communication.NetStack
942    * @crossplatform
943    * @since 10
944    */
945   export interface TCPSendOptions {
946     /**
947      * Data to send.
948      * @type { string | ArrayBuffer }
949      * @syscap SystemCapability.Communication.NetStack
950      * @since 7
951      */
952     /**
953      * Data to send.
954      * @type { string | ArrayBuffer }
955      * @syscap SystemCapability.Communication.NetStack
956      * @crossplatform
957      * @since 10
958      */
959     data: string | ArrayBuffer;
960 
961     /**
962      * Character encoding format.
963      * @type { ?string }
964      * @syscap SystemCapability.Communication.NetStack
965      * @since 7
966      */
967     /**
968      * Character encoding format.
969      * @type { ?string }
970      * @syscap SystemCapability.Communication.NetStack
971      * @crossplatform
972      * @since 10
973      */
974     encoding?: string;
975   }
976 
977   /**
978    * Defines other properties of the TCPSocket connection.
979    * @interface TCPExtraOptions
980    * @syscap SystemCapability.Communication.NetStack
981    * @since 7
982    */
983   /**
984    * Defines other properties of the TCPSocket connection.
985    * @interface TCPExtraOptions
986    * @syscap SystemCapability.Communication.NetStack
987    * @crossplatform
988    * @since 10
989    */
990   export interface TCPExtraOptions extends ExtraOptionsBase {
991     /**
992      * Whether to keep the connection alive. The default value is false.
993      * @type { ?boolean }
994      * @syscap SystemCapability.Communication.NetStack
995      * @since 7
996      */
997     /**
998      * Whether to keep the connection alive. The default value is false.
999      * @type { ?boolean }
1000      * @syscap SystemCapability.Communication.NetStack
1001      * @crossplatform
1002      * @since 10
1003      */
1004     keepAlive?: boolean;
1005 
1006     /**
1007      * Whether to enable OOBInline. The default value is false.
1008      * @type { ?boolean }
1009      * @syscap SystemCapability.Communication.NetStack
1010      * @since 7
1011      */
1012     /**
1013      * Whether to enable OOBInline. The default value is false.
1014      * @type { ?boolean }
1015      * @syscap SystemCapability.Communication.NetStack
1016      * @crossplatform
1017      * @since 10
1018      */
1019     OOBInline?: boolean;
1020 
1021     /**
1022      * Whether to enable no-delay on the TCPSocket connection. The default value is false.
1023      * @type { ?boolean }
1024      * @syscap SystemCapability.Communication.NetStack
1025      * @since 7
1026      */
1027     /**
1028      * Whether to enable no-delay on the TCPSocket connection. The default value is false.
1029      * @type { ?boolean }
1030      * @syscap SystemCapability.Communication.NetStack
1031      * @crossplatform
1032      * @since 10
1033      */
1034     TCPNoDelay?: boolean;
1035 
1036     /**
1037      * Socket linger.
1038      * @type { ?object }
1039      * @syscap SystemCapability.Communication.NetStack
1040      * @crossplatform
1041      * @since 7
1042      */
1043     /**
1044      * Socket linger.
1045      * @type { ?object }
1046      * @syscap SystemCapability.Communication.NetStack
1047      * @crossplatform
1048      * @since 10
1049      */
1050     socketLinger?: { on: boolean, linger: number };
1051   }
1052 
1053   /**
1054    * Defines a TCPSocket connection.
1055    * @interface TCPSocket
1056    * @syscap SystemCapability.Communication.NetStack
1057    * @since 7
1058    */
1059   /**
1060    * Defines a TCPSocket connection.
1061    * @interface TCPSocket
1062    * @syscap SystemCapability.Communication.NetStack
1063    * @crossplatform
1064    * @since 10
1065    */
1066   export interface TCPSocket {
1067     /**
1068      * Binds the IP address and port number. The port number can be specified or randomly allocated by the system.
1069      * @permission ohos.permission.INTERNET
1070      * @param { NetAddress } address - Destination address. {@link NetAddress}
1071      * @param { AsyncCallback<void> } callback - Return the callback of bind.
1072      * @throws { BusinessError } 401 - Parameter error.
1073      * @throws { BusinessError } 201 - Permission denied.
1074      * @syscap SystemCapability.Communication.NetStack
1075      * @since 7
1076      */
1077     /**
1078      * Binds the IP address and port number. The port number can be specified or randomly allocated by the system.
1079      * @permission ohos.permission.INTERNET
1080      * @param { NetAddress } address - Destination address. {@link NetAddress}
1081      * @param { AsyncCallback<void> } callback - the callback of bind.
1082      * @throws { BusinessError } 401 - Parameter error.
1083      * @throws { BusinessError } 201 - Permission denied.
1084      * @syscap SystemCapability.Communication.NetStack
1085      * @crossplatform
1086      * @since 10
1087      */
1088     bind(address: NetAddress, callback: AsyncCallback<void>): void;
1089 
1090     /**
1091      * Binds the IP address and port number. The port number can be specified or randomly allocated by the system.
1092      * @permission ohos.permission.INTERNET
1093      * @param { NetAddress } address - Destination address. {@link NetAddress}
1094      * @returns { Promise<void> } The promise returned by the function.
1095      * @throws { BusinessError } 401 - Parameter error.
1096      * @throws { BusinessError } 201 - Permission denied.
1097      * @syscap SystemCapability.Communication.NetStack
1098      * @since 7
1099      */
1100     /**
1101      * Binds the IP address and port number. The port number can be specified or randomly allocated by the system.
1102      * @permission ohos.permission.INTERNET
1103      * @param { NetAddress } address - Destination address. {@link NetAddress}
1104      * @returns { Promise<void> } The promise returned by the function.
1105      * @throws { BusinessError } 401 - Parameter error.
1106      * @throws { BusinessError } 201 - Permission denied.
1107      * @syscap SystemCapability.Communication.NetStack
1108      * @crossplatform
1109      * @since 10
1110      */
1111     bind(address: NetAddress): Promise<void>;
1112 
1113     /**
1114      * Sets up a connection to the specified IP address and port number.
1115      * @permission ohos.permission.INTERNET
1116      * @param { TCPConnectOptions } options - Optional parameters {@link TCPConnectOptions}.
1117      * @param { AsyncCallback<void> } callback - the callback of connect.
1118      * @throws { BusinessError } 401 - Parameter error.
1119      * @throws { BusinessError } 201 - Permission denied.
1120      * @syscap SystemCapability.Communication.NetStack
1121      * @since 7
1122      */
1123     /**
1124      * Sets up a connection to the specified IP address and port number.
1125      * @permission ohos.permission.INTERNET
1126      * @param { TCPConnectOptions } options - Optional parameters {@link TCPConnectOptions}.
1127      * @param { AsyncCallback<void> } callback - the callback of connect.
1128      * @throws { BusinessError } 401 - Parameter error.
1129      * @throws { BusinessError } 201 - Permission denied.
1130      * @syscap SystemCapability.Communication.NetStack
1131      * @crossplatform
1132      * @since 10
1133      */
1134     connect(options: TCPConnectOptions, callback: AsyncCallback<void>): void;
1135 
1136     /**
1137      * Sets up a connection to the specified IP address and port number.
1138      * @permission ohos.permission.INTERNET
1139      * @param { TCPConnectOptions } options - Optional parameters {@link TCPConnectOptions}.
1140      * @returns { Promise<void> } The promise returned by the function.
1141      * @throws { BusinessError } 401 - Parameter error.
1142      * @throws { BusinessError } 201 - Permission denied.
1143      * @syscap SystemCapability.Communication.NetStack
1144      * @since 7
1145      */
1146     /**
1147      * Sets up a connection to the specified IP address and port number.
1148      * @permission ohos.permission.INTERNET
1149      * @param { TCPConnectOptions } options - Optional parameters {@link TCPConnectOptions}.
1150      * @returns { Promise<void> } The promise returned by the function.
1151      * @throws { BusinessError } 401 - Parameter error.
1152      * @throws { BusinessError } 201 - Permission denied.
1153      * @syscap SystemCapability.Communication.NetStack
1154      * @crossplatform
1155      * @since 10
1156      */
1157     connect(options: TCPConnectOptions): Promise<void>;
1158 
1159     /**
1160      * Sends data over a TCPSocket connection.
1161      * @permission ohos.permission.INTERNET
1162      * @param { TCPSendOptions } options - Optional parameters {@link TCPSendOptions}.
1163      * @param { AsyncCallback<void> } callback - the callback of send.
1164      * @throws { BusinessError } 401 - Parameter error.
1165      * @throws { BusinessError } 201 - Permission denied.
1166      * @syscap SystemCapability.Communication.NetStack
1167      * @since 7
1168      */
1169     /**
1170      * Sends data over a TCPSocket connection.
1171      * @permission ohos.permission.INTERNET
1172      * @param { TCPSendOptions } options - Optional parameters {@link TCPSendOptions}.
1173      * @param { AsyncCallback<void> } callback - the callback of send.
1174      * @throws { BusinessError } 401 - Parameter error.
1175      * @throws { BusinessError } 201 - Permission denied.
1176      * @syscap SystemCapability.Communication.NetStack
1177      * @crossplatform
1178      * @since 10
1179      */
1180     send(options: TCPSendOptions, callback: AsyncCallback<void>): void;
1181 
1182     /**
1183      * Sends data over a TCPSocket connection.
1184      * @permission ohos.permission.INTERNET
1185      * @param { TCPSendOptions } options - Optional parameters {@link TCPSendOptions}.
1186      * @returns { Promise<void> } The promise returned by the function.
1187      * @throws { BusinessError } 401 - Parameter error.
1188      * @throws { BusinessError } 201 - Permission denied.
1189      * @syscap SystemCapability.Communication.NetStack
1190      * @since 7
1191      */
1192     /**
1193      * Sends data over a TCPSocket connection.
1194      * @permission ohos.permission.INTERNET
1195      * @param { TCPSendOptions } options - Optional parameters {@link TCPSendOptions}.
1196      * @returns { Promise<void> } The promise returned by the function.
1197      * @throws { BusinessError } 401 - Parameter error.
1198      * @throws { BusinessError } 201 - Permission denied.
1199      * @syscap SystemCapability.Communication.NetStack
1200      * @crossplatform
1201      * @since 10
1202      */
1203     send(options: TCPSendOptions): Promise<void>;
1204 
1205     /**
1206      * Closes a TCPSocket connection.
1207      * @permission ohos.permission.INTERNET
1208      * @param { AsyncCallback<void> } callback - the callback of close.
1209      * @throws { BusinessError } 201 - Permission denied.
1210      * @syscap SystemCapability.Communication.NetStack
1211      * @since 7
1212      */
1213     /**
1214      * Closes a TCPSocket connection.
1215      * @permission ohos.permission.INTERNET
1216      * @param { AsyncCallback<void> } callback - the callback of close.
1217      * @throws { BusinessError } 201 - Permission denied.
1218      * @syscap SystemCapability.Communication.NetStack
1219      * @crossplatform
1220      * @since 10
1221      */
1222     close(callback: AsyncCallback<void>): void;
1223 
1224     /**
1225      * Closes a TCPSocket connection.
1226      * @permission ohos.permission.INTERNET
1227      * @returns { Promise<void> } The promise returned by the function.
1228      * @throws { BusinessError } 201 - Permission denied.
1229      * @syscap SystemCapability.Communication.NetStack
1230      * @since 7
1231      */
1232     /**
1233      * Closes a TCPSocket connection.
1234      * @permission ohos.permission.INTERNET
1235      * @returns { Promise<void> } The promise returned by the function.
1236      * @throws { BusinessError } 201 - Permission denied.
1237      * @syscap SystemCapability.Communication.NetStack
1238      * @crossplatform
1239      * @since 10
1240      */
1241     close(): Promise<void>;
1242 
1243     /**
1244      * Obtains the peer address of a TCPSocket connection.
1245      * @permission ohos.permission.INTERNET
1246      * @param { AsyncCallback<NetAddress> } callback - the callback of getRemoteAddress. {@link NetAddress}
1247      * @throws { BusinessError } 201 - Permission denied.
1248      * @syscap SystemCapability.Communication.NetStack
1249      * @since 7
1250      */
1251     /**
1252      * Obtains the peer address of a TCPSocket connection.
1253      * @permission ohos.permission.INTERNET
1254      * @param { AsyncCallback<NetAddress> } callback - the callback of getRemoteAddress. {@link NetAddress}
1255      * @throws { BusinessError } 201 - Permission denied.
1256      * @syscap SystemCapability.Communication.NetStack
1257      * @crossplatform
1258      * @since 10
1259      */
1260     getRemoteAddress(callback: AsyncCallback<NetAddress>): void;
1261 
1262     /**
1263      * Obtains the peer address of a TCPSocket connection.
1264      * @permission ohos.permission.INTERNET
1265      * @returns { Promise<NetAddress> } The promise returned by the function.
1266      * @throws { BusinessError } 201 - Permission denied.
1267      * @syscap SystemCapability.Communication.NetStack
1268      * @since 7
1269      */
1270     /**
1271      * Obtains the peer address of a TCPSocket connection.
1272      * @permission ohos.permission.INTERNET
1273      * @returns { Promise<NetAddress> } The promise returned by the function.
1274      * @throws { BusinessError } 201 - Permission denied.
1275      * @syscap SystemCapability.Communication.NetStack
1276      * @crossplatform
1277      * @since 10
1278      */
1279     getRemoteAddress(): Promise<NetAddress>;
1280 
1281     /**
1282      * Obtains the status of the TCPSocket connection.
1283      * @permission ohos.permission.INTERNET
1284      * @param { AsyncCallback<SocketStateBase> } callback - the callback of getState. {@link SocketStateBase}
1285      * @throws { BusinessError } 201 - Permission denied.
1286      * @syscap SystemCapability.Communication.NetStack
1287      * @since 7
1288      */
1289     /**
1290      * Obtains the status of the TCPSocket connection.
1291      * @permission ohos.permission.INTERNET
1292      * @param { AsyncCallback<SocketStateBase> } callback - the callback of getState. {@link SocketStateBase}
1293      * @throws { BusinessError } 201 - Permission denied.
1294      * @syscap SystemCapability.Communication.NetStack
1295      * @crossplatform
1296      * @since 10
1297      */
1298     getState(callback: AsyncCallback<SocketStateBase>): void;
1299 
1300     /**
1301      * Obtains the status of the TCPSocket connection.
1302      * @permission ohos.permission.INTERNET
1303      * @returns { Promise<SocketStateBase> } The promise returned by the function.
1304      * @throws { BusinessError } 201 - Permission denied.
1305      * @syscap SystemCapability.Communication.NetStack
1306      * @since 7
1307      */
1308     /**
1309      * Obtains the status of the TCPSocket connection.
1310      * @permission ohos.permission.INTERNET
1311      * @returns { Promise<SocketStateBase> } The promise returned by the function.
1312      * @throws { BusinessError } 201 - Permission denied.
1313      * @syscap SystemCapability.Communication.NetStack
1314      * @crossplatform
1315      * @since 10
1316      */
1317     getState(): Promise<SocketStateBase>;
1318 
1319     /**
1320      * Obtains the file descriptor of the TCPSocket connection.
1321      * @param { AsyncCallback<number> } callback - The callback returns the file descriptor of the TCPSocket connection.
1322      * @syscap SystemCapability.Communication.NetStack
1323      * @since 10
1324      */
1325     getSocketFd(callback: AsyncCallback<number>): void;
1326 
1327     /**
1328      * Obtains the file descriptor of the TCPSocket connection.
1329      * @returns { Promise<number> } The promise returns the file descriptor of the TCPSocket connection.
1330      * @syscap SystemCapability.Communication.NetStack
1331      * @since 10
1332      */
1333     getSocketFd(): Promise<number>;
1334 
1335     /**
1336      * Sets other attributes of the TCPSocket connection.
1337      * @permission ohos.permission.INTERNET
1338      * @param { TCPExtraOptions } options - Optional parameters {@link TCPExtraOptions}.
1339      * @param { AsyncCallback<void> } callback - the callback of setExtraOptions.
1340      * @throws { BusinessError } 401 - Parameter error.
1341      * @throws { BusinessError } 201 - Permission denied.
1342      * @syscap SystemCapability.Communication.NetStack
1343      * @since 7
1344      */
1345     /**
1346      * Sets other attributes of the TCPSocket connection.
1347      * @permission ohos.permission.INTERNET
1348      * @param { TCPExtraOptions } options - Optional parameters {@link TCPExtraOptions}.
1349      * @param { AsyncCallback<void> } callback - the callback of setExtraOptions.
1350      * @throws { BusinessError } 401 - Parameter error.
1351      * @throws { BusinessError } 201 - Permission denied.
1352      * @syscap SystemCapability.Communication.NetStack
1353      * @crossplatform
1354      * @since 10
1355      */
1356     setExtraOptions(options: TCPExtraOptions, callback: AsyncCallback<void>): void;
1357 
1358     /**
1359      * Sets other attributes of the TCPSocket connection.
1360      * @permission ohos.permission.INTERNET
1361      * @param { TCPExtraOptions } options - Optional parameters {@link TCPExtraOptions}.
1362      * @returns { Promise<void> } The promise returned by the function.
1363      * @throws { BusinessError } 401 - Parameter error.
1364      * @throws { BusinessError } 201 - Permission denied.
1365      * @syscap SystemCapability.Communication.NetStack
1366      * @since 7
1367      */
1368     /**
1369      * Sets other attributes of the TCPSocket connection.
1370      * @permission ohos.permission.INTERNET
1371      * @param { TCPExtraOptions } options - Optional parameters {@link TCPExtraOptions}.
1372      * @returns { Promise<void> } The promise returned by the function.
1373      * @throws { BusinessError } 401 - Parameter error.
1374      * @throws { BusinessError } 201 - Permission denied.
1375      * @syscap SystemCapability.Communication.NetStack
1376      * @crossplatform
1377      * @since 10
1378      */
1379     setExtraOptions(options: TCPExtraOptions): Promise<void>;
1380 
1381     /**
1382      * Listens for message receiving events of the TCPSocket connection.
1383      * @param { 'message' } type - Indicates Event name.
1384      * @param { Callback<{ message: ArrayBuffer, remoteInfo: SocketRemoteInfo }> } callback - the callback used to return the result.
1385      * @syscap SystemCapability.Communication.NetStack
1386      * @since 7
1387      */
1388     /**
1389      * Listens for message receiving events of the TCPSocket connection.
1390      * @param { 'message' } type Indicates Event name.
1391      * @param { Callback<{ message: ArrayBuffer, remoteInfo: SocketRemoteInfo }> } callback - the callback used to return the result.
1392      * @syscap SystemCapability.Communication.NetStack
1393      * @crossplatform
1394      * @since 10
1395      */
1396     on(type: 'message', callback: Callback<{ message: ArrayBuffer, remoteInfo: SocketRemoteInfo }>): void;
1397 
1398     /**
1399      * Cancels listening for message receiving events of the TCPSocket connection.
1400      * @param { 'message' } type Indicates Event name.
1401      * @param { Callback<{ message: ArrayBuffer, remoteInfo: SocketRemoteInfo }> } callback - the callback used to return the result.
1402      * @syscap SystemCapability.Communication.NetStack
1403      * @since 7
1404      */
1405     /**
1406      * Cancels listening for message receiving events of the TCPSocket connection.
1407      * @param { 'message' } type Indicates Event name.
1408      * @param { Callback<{ message: ArrayBuffer, remoteInfo: SocketRemoteInfo }> } callback - the callback used to return the result.
1409      * @syscap SystemCapability.Communication.NetStack
1410      * @crossplatform
1411      * @since 10
1412      */
1413     off(type: 'message', callback?: Callback<{ message: ArrayBuffer, remoteInfo: SocketRemoteInfo }>): void;
1414 
1415 
1416     /**
1417      * Listens for connection or close events of the TCPSocket connection.
1418      * @param { 'connect' | 'close' } type - Indicates Event name.
1419      * @param { Callback<void> } callback - the callback used to return the result.
1420      * @syscap SystemCapability.Communication.NetStack
1421      * @since 7
1422      */
1423     /**
1424      * Listens for connection or close events of the TCPSocket connection.
1425      * @param { 'connect' | 'close' } type - Indicates Event name.
1426      * @param { Callback<void> } callback - the callback used to return the result.
1427      * @syscap SystemCapability.Communication.NetStack
1428      * @crossplatform
1429      * @since 10
1430      */
1431     on(type: 'connect' | 'close', callback: Callback<void>): void;
1432 
1433     /**
1434      * Cancels listening for connection or close events of the TCPSocket connection.
1435      * @param { 'connect' | 'close' } type - Indicates Event name.
1436      * @param { Callback<void> } callback - the callback used to return the result.
1437      * @syscap SystemCapability.Communication.NetStack
1438      * @since 7
1439      */
1440     /**
1441      * Cancels listening for connection or close events of the TCPSocket connection.
1442      * @param { 'connect' | 'close' } type - Indicates Event name.
1443      * @param { Callback<void> } callback - the callback used to return the result.
1444      * @syscap SystemCapability.Communication.NetStack
1445      * @crossplatform
1446      * @since 10
1447      */
1448     off(type: 'connect' | 'close', callback?: Callback<void>): void;
1449 
1450     /**
1451      * Listens for error events of the TCPSocket connection.
1452      * @param { 'error' } type - Indicates Event name.
1453      * @param { ErrorCallback } callback - the callback used to return the result.
1454      * @syscap SystemCapability.Communication.NetStack
1455      * @since 7
1456      */
1457     /**
1458      * Listens for error events of the TCPSocket connection.
1459      * @param { 'error' } type - Indicates Event name.
1460      * @param { ErrorCallback } callback - the callback used to return the result.
1461      * @syscap SystemCapability.Communication.NetStack
1462      * @crossplatform
1463      * @since 10
1464      */
1465     on(type: 'error', callback: ErrorCallback): void;
1466 
1467     /**
1468      * Cancels listening for error events of the TCPSocket connection.
1469      * @param { 'error' } type - Indicates Event name.
1470      * @param { ErrorCallback } callback - the callback used to return the result.
1471      * @syscap SystemCapability.Communication.NetStack
1472      * @since 7
1473      */
1474     /**
1475      * Cancels listening for error events of the TCPSocket connection.
1476      * @param { 'error' } type - Indicates Event name.
1477      * @param { ErrorCallback } callback - the callback used to return the result.
1478      * @syscap SystemCapability.Communication.NetStack
1479      * @crossplatform
1480      * @since 10
1481      */
1482     off(type: 'error', callback?: ErrorCallback): void;
1483   }
1484 
1485   /**
1486    * Defines a TLSSocket connection.
1487    * @interface TLSSocket
1488    * @syscap SystemCapability.Communication.NetStack
1489    * @since 9
1490    */
1491   /**
1492    * Defines a TLSSocket connection.
1493    * @interface TLSSocket
1494    * @syscap SystemCapability.Communication.NetStack
1495    * @crossplatform
1496    * @since 10
1497    */
1498   export interface TLSSocket {
1499     /**
1500      * Binds the IP address and port number. The port number can be specified or randomly allocated by the system.
1501      * @permission ohos.permission.INTERNET
1502      * @param { NetAddress } address - Destination address. {@link NetAddress}
1503      * @param { AsyncCallback<void> } callback - the callback of bind.
1504      * @throws { BusinessError } 401 - Parameter error.
1505      * @throws { BusinessError } 201 - Permission denied.
1506      * @throws { BusinessError } 2303198 - Address already in use.
1507      * @throws { BusinessError } 2300002 - System internal error.
1508      * @syscap SystemCapability.Communication.NetStack
1509      * @since 9
1510      */
1511     /**
1512      * Binds the IP address and port number. The port number can be specified or randomly allocated by the system.
1513      * @permission ohos.permission.INTERNET
1514      * @param { NetAddress } address - Destination address. {@link NetAddress}
1515      * @param { AsyncCallback<void> } callback - the callback of bind.
1516      * @throws { BusinessError } 401 - Parameter error.
1517      * @throws { BusinessError } 201 - Permission denied.
1518      * @throws { BusinessError } 2303198 - Address already in use.
1519      * @throws { BusinessError } 2300002 - System internal error.
1520      * @syscap SystemCapability.Communication.NetStack
1521      * @crossplatform
1522      * @since 10
1523      */
1524     bind(address: NetAddress, callback: AsyncCallback<void>): void;
1525 
1526     /**
1527      * Binds the IP address and port number. The port number can be specified or randomly allocated by the system.
1528      * @permission ohos.permission.INTERNET
1529      * @param { NetAddress } address - Destination address. {@link NetAddress}
1530      * @returns { Promise<void> } The promise returned by the function.
1531      * @throws { BusinessError } 401 - Parameter error.
1532      * @throws { BusinessError } 201 - Permission denied.
1533      * @throws { BusinessError } 2303198 - Address already in use.
1534      * @throws { BusinessError } 2300002 - System internal error.
1535      * @syscap SystemCapability.Communication.NetStack
1536      * @since 9
1537      */
1538     /**
1539      * Binds the IP address and port number. The port number can be specified or randomly allocated by the system.
1540      * @permission ohos.permission.INTERNET
1541      * @param { NetAddress } address - Destination address. {@link NetAddress}
1542      * @returns { Promise<void> } The promise returned by the function.
1543      * @throws { BusinessError } 401 - Parameter error.
1544      * @throws { BusinessError } 201 - Permission denied.
1545      * @throws { BusinessError } 2303198 - Address already in use.
1546      * @throws { BusinessError } 2300002 - System internal error.
1547      * @syscap SystemCapability.Communication.NetStack
1548      * @crossplatform
1549      * @since 10
1550      */
1551     bind(address: NetAddress): Promise<void>;
1552 
1553     /**
1554      * Obtains the peer address of a TLSSocket connection.
1555      * @param { AsyncCallback<NetAddress> } callback - the callback of getRemoteAddress.
1556      * @throws { BusinessError } 2303188 - Socket operation on non-socket.
1557      * @throws { BusinessError } 2300002 - System internal error.
1558      * @syscap SystemCapability.Communication.NetStack
1559      * @since 9
1560      */
1561     /**
1562      * Obtains the peer address of a TLSSocket connection.
1563      * @param { AsyncCallback<NetAddress> } callback - the callback of getRemoteAddress.
1564      * @throws { BusinessError } 2303188 - Socket operation on non-socket.
1565      * @throws { BusinessError } 2300002 - System internal error.
1566      * @syscap SystemCapability.Communication.NetStack
1567      * @crossplatform
1568      * @since 10
1569      */
1570     getRemoteAddress(callback: AsyncCallback<NetAddress>): void;
1571 
1572     /**
1573      * Obtains the peer address of a TLSSocket connection.
1574      * @returns { Promise<NetAddress> } The promise returned by the function.
1575      * @throws { BusinessError } 2303188 - Socket operation on non-socket.
1576      * @throws { BusinessError } 2300002 - System internal error.
1577      * @syscap SystemCapability.Communication.NetStack
1578      * @since 9
1579      */
1580     /**
1581      * Obtains the peer address of a TLSSocket connection.
1582      * @returns { Promise<NetAddress> } The promise returned by the function.
1583      * @throws { BusinessError } 2303188 - Socket operation on non-socket.
1584      * @throws { BusinessError } 2300002 - System internal error.
1585      * @syscap SystemCapability.Communication.NetStack
1586      * @crossplatform
1587      * @since 10
1588      */
1589     getRemoteAddress(): Promise<NetAddress>;
1590 
1591     /**
1592      * Obtains the status of the TLSSocket connection.
1593      * @param { AsyncCallback<SocketStateBase> } callback - the callback of getState.
1594      * @throws { BusinessError } 2303188 - Socket operation on non-socket.
1595      * @throws { BusinessError } 2300002 - System internal error.
1596      * @syscap SystemCapability.Communication.NetStack
1597      * @since 9
1598      */
1599     /**
1600      * Obtains the status of the TLSSocket connection.
1601      * @param { AsyncCallback<SocketStateBase> } callback - the callback of getState.
1602      * @throws { BusinessError } 2303188 - Socket operation on non-socket.
1603      * @throws { BusinessError } 2300002 - System internal error.
1604      * @syscap SystemCapability.Communication.NetStack
1605      * @crossplatform
1606      * @since 10
1607      */
1608     getState(callback: AsyncCallback<SocketStateBase>): void;
1609 
1610     /**
1611      * Obtains the status of the TLSSocket connection.
1612      * @returns { Promise<SocketStateBase> } The promise returned by the function.
1613      * @throws { BusinessError } 2303188 - Socket operation on non-socket.
1614      * @throws { BusinessError } 2300002 - System internal error.
1615      * @syscap SystemCapability.Communication.NetStack
1616      * @since 9
1617      */
1618     /**
1619      * Obtains the status of the TLSSocket connection.
1620      * @returns { Promise<SocketStateBase> } The promise returned by the function.
1621      * @throws { BusinessError } 2303188 - Socket operation on non-socket.
1622      * @throws { BusinessError } 2300002 - System internal error.
1623      * @syscap SystemCapability.Communication.NetStack
1624      * @crossplatform
1625      * @since 10
1626      */
1627     getState(): Promise<SocketStateBase>;
1628 
1629     /**
1630      * Sets other attributes of the TLSSocket connection.
1631      * @param { TCPExtraOptions } options - Optional parameters {@link TCPExtraOptions}.
1632      * @param { AsyncCallback<void> } callback - the callback of setExtraOptions.
1633      * @throws { BusinessError } 401 - Parameter error.
1634      * @throws { BusinessError } 2303188 - Socket operation on non-socket.
1635      * @throws { BusinessError } 2300002 - System internal error.
1636      * @syscap SystemCapability.Communication.NetStack
1637      * @since 9
1638      */
1639     /**
1640      * Sets other attributes of the TLSSocket connection.
1641      * @param { TCPExtraOptions } options - Optional parameters {@link TCPExtraOptions}.
1642      * @param { AsyncCallback<void> } callback - the callback of setExtraOptions.
1643      * @throws { BusinessError } 401 - Parameter error.
1644      * @throws { BusinessError } 2303188 - Socket operation on non-socket.
1645      * @throws { BusinessError } 2300002 - System internal error.
1646      * @syscap SystemCapability.Communication.NetStack
1647      * @crossplatform
1648      * @since 10
1649      */
1650     setExtraOptions(options: TCPExtraOptions, callback: AsyncCallback<void>): void;
1651 
1652     /**
1653      * Sets other attributes of the TLSSocket connection.
1654      * @param { TCPExtraOptions } options - Optional parameters {@link TCPExtraOptions}.
1655      * @returns { Promise<void> } The promise returned by the function.
1656      * @throws { BusinessError } 401 - Parameter error.
1657      * @throws { BusinessError } 2303188 - Socket operation on non-socket.
1658      * @throws { BusinessError } 2300002 - System internal error.
1659      * @syscap SystemCapability.Communication.NetStack
1660      * @since 9
1661      */
1662     /**
1663      * Sets other attributes of the TLSSocket connection.
1664      * @param { TCPExtraOptions } options - Optional parameters {@link TCPExtraOptions}.
1665      * @returns { Promise<void> } The promise returned by the function.
1666      * @throws { BusinessError } 401 - Parameter error.
1667      * @throws { BusinessError } 2303188 - Socket operation on non-socket.
1668      * @throws { BusinessError } 2300002 - System internal error.
1669      * @syscap SystemCapability.Communication.NetStack
1670      * @crossplatform
1671      * @since 10
1672      */
1673     setExtraOptions(options: TCPExtraOptions): Promise<void>;
1674 
1675     /**
1676      * Listens for message receiving events of the TLSSocket connection.
1677      * @param { 'message' } type - Indicates Event name.
1678      * @param { Callback<{ message: ArrayBuffer, remoteInfo: SocketRemoteInfo }> } callback - the callback used to return the result.
1679      * @throws { BusinessError } 401 - Parameter error.
1680      * @syscap SystemCapability.Communication.NetStack
1681      * @since 9
1682      */
1683     /**
1684      * Listens for message receiving events of the TLSSocket connection.
1685      * @param { 'message' } type Indicates Event name.
1686      * @param { Callback<{ message: ArrayBuffer, remoteInfo: SocketRemoteInfo }> } callback - the callback used to return the result.
1687      * @throws { BusinessError } 401 - Parameter error.
1688      * @syscap SystemCapability.Communication.NetStack
1689      * @crossplatform
1690      * @since 10
1691      */
1692     on(type: 'message', callback: Callback<{ message: ArrayBuffer, remoteInfo: SocketRemoteInfo }>): void;
1693 
1694     /**
1695      * Cancels listening for message receiving events of the TLSSocket connection.
1696      * @param { 'message' } type - Indicates Event name.
1697      * @param { Callback<{ message: ArrayBuffer, remoteInfo: SocketRemoteInfo }> } callback - the callback used to return the result.
1698      * @throws { BusinessError } 401 - Parameter error.
1699      * @syscap SystemCapability.Communication.NetStack
1700      * @since 9
1701      */
1702     /**
1703      * Cancels listening for message receiving events of the TLSSocket connection.
1704      * @param { 'message' } type Indicates Event name.
1705      * @param { Callback<{ message: ArrayBuffer, remoteInfo: SocketRemoteInfo }> } callback - the callback used to return the result.
1706      * @throws { BusinessError } 401 - Parameter error.
1707      * @syscap SystemCapability.Communication.NetStack
1708      * @crossplatform
1709      * @since 10
1710      */
1711     off(type: 'message', callback?: Callback<{ message: ArrayBuffer, remoteInfo: SocketRemoteInfo }>): void;
1712 
1713     /**
1714      * Listens for connection or close events of the TLSSocket connection.
1715      * @param { 'connect' | 'close' } type - Indicates Event name.
1716      * @param {Callback<void> } callback - the callback used to return the result.
1717      * @throws { BusinessError } 401 - Parameter error.
1718      * @syscap SystemCapability.Communication.NetStack
1719      * @since 9
1720      */
1721     /**
1722      * Listens for connection or close events of the TLSSocket connection.
1723      * @param { 'connect' | 'close' } type - Indicates Event name.
1724      * @param {Callback<void> } callback - the callback used to return the result.
1725      * @throws { BusinessError } 401 - Parameter error.
1726      * @syscap SystemCapability.Communication.NetStack
1727      * @crossplatform
1728      * @since 10
1729      */
1730     on(type: 'connect' | 'close', callback: Callback<void>): void;
1731 
1732     /**
1733      * Cancels listening for connection or close events of the TLSSocket connection.
1734      * @param { 'connect' | 'close' } type - Indicates Event name.
1735      * @param {Callback<void> } callback - the callback used to return the result.
1736      * @throws { BusinessError } 401 - Parameter error.
1737      * @syscap SystemCapability.Communication.NetStack
1738      * @since 9
1739      */
1740     /**
1741      * Cancels listening for connection or close events of the TLSSocket connection.
1742      * @param { 'connect' | 'close' } type - Indicates Event name.
1743      * @param {Callback<void> } callback - the callback used to return the result.
1744      * @throws { BusinessError } 401 - Parameter error.
1745      * @syscap SystemCapability.Communication.NetStack
1746      * @crossplatform
1747      * @since 10
1748      */
1749     off(type: 'connect' | 'close', callback?: Callback<void>): void;
1750 
1751     /**
1752      * Listens for error events of the TLSSocket connection.
1753      * @param { 'error' } type - Indicates Event name.
1754      * @param { ErrorCallback } callback - the callback used to return the result.
1755      * @throws { BusinessError } 401 - Parameter error.
1756      * @syscap SystemCapability.Communication.NetStack
1757      * @since 9
1758      */
1759     /**
1760      * Listens for error events of the TLSSocket connection.
1761      * @param { 'error' } type - Indicates Event name.
1762      * @param { ErrorCallback } callback - the callback used to return the result.
1763      * @throws { BusinessError } 401 - Parameter error.
1764      * @syscap SystemCapability.Communication.NetStack
1765      * @crossplatform
1766      * @since 10
1767      */
1768     on(type: 'error', callback: ErrorCallback): void;
1769 
1770     /**
1771      * Cancels listening for error events of the TLSSocket connection.
1772      * @param { 'error' } type - Indicates Event name.
1773      * @param { ErrorCallback } callback - the callback used to return the result.
1774      * @throws { BusinessError } 401 - Parameter error.
1775      * @syscap SystemCapability.Communication.NetStack
1776      * @since 9
1777      */
1778     /**
1779      * Cancels listening for error events of the TLSSocket connection.
1780      * @param { 'error' } type - Indicates Event name.
1781      * @param { ErrorCallback } callback - the callback used to return the result.
1782      * @throws { BusinessError } 401 - Parameter error.
1783      * @syscap SystemCapability.Communication.NetStack
1784      * @crossplatform
1785      * @since 10
1786      */
1787     off(type: 'error', callback?: ErrorCallback): void;
1788 
1789     /**
1790      * Returns an object representing a local certificate.
1791      * @param { AsyncCallback<X509CertRawData> } callback - the callback of getCertificate.
1792      * @throws { BusinessError } 2303501 - SSL is null.
1793      * @throws { BusinessError } 2303504 - Error looking up x509
1794      * @throws { BusinessError } 2300002 - System internal error.
1795      * @syscap SystemCapability.Communication.NetStack
1796      * @since 9
1797      */
1798     /**
1799      * Returns an object representing a local certificate.
1800      * @param { AsyncCallback<X509CertRawData> } callback - the callback of getCertificate.
1801      * @throws { BusinessError } 2303501 - SSL is null.
1802      * @throws { BusinessError } 2303504 - Error looking up x509
1803      * @throws { BusinessError } 2300002 - System internal error.
1804      * @syscap SystemCapability.Communication.NetStack
1805      * @crossplatform
1806      * @since 10
1807      */
1808     getCertificate(callback: AsyncCallback<X509CertRawData>): void;
1809 
1810     /**
1811      * Returns an object representing a local certificate.
1812      * @returns { Promise<X509CertRawData> } The promise returned by the function.
1813      * @throws { BusinessError } 2303501 - SSL is null.
1814      * @throws { BusinessError } 2303504 - Error looking up x509
1815      * @throws { BusinessError } 2300002 - System internal error.
1816      * @syscap SystemCapability.Communication.NetStack
1817      * @since 9
1818      */
1819     /**
1820      * Returns an object representing a local certificate.
1821      * @returns { Promise<X509CertRawData> } The promise returned by the function.
1822      * @throws { BusinessError } 2303501 - SSL is null.
1823      * @throws { BusinessError } 2303504 - Error looking up x509
1824      * @throws { BusinessError } 2300002 - System internal error.
1825      * @syscap SystemCapability.Communication.NetStack
1826      * @crossplatform
1827      * @since 10
1828      */
1829     getCertificate(): Promise<X509CertRawData>;
1830 
1831     /**
1832      * <p>Returns an object representing the peer certificate. If the peer does not provide a certificate,
1833      * <p>an empty object will be returned. If the socket is destroyed, null is returned.</p>
1834      * It only contains the peer's certificate.
1835      * @param { AsyncCallback<X509CertRawData> } callback - the callback of getRemoteCertificate.
1836      * @throws { BusinessError } 2303501 - SSL is null.
1837      * @throws { BusinessError } 2300002 - System internal error.
1838      * @syscap SystemCapability.Communication.NetStack
1839      * @since 9
1840      */
1841     /**
1842      * <p>Returns an object representing the peer certificate. If the peer does not provide a certificate,
1843      * <p>an empty object will be returned. If the socket is destroyed, null is returned.</p>
1844      * It only contains the peer's certificate.
1845      * @param { AsyncCallback<X509CertRawData> } callback - the callback of getRemoteCertificate.
1846      * @throws { BusinessError } 2303501 - SSL is null.
1847      * @throws { BusinessError } 2300002 - System internal error.
1848      * @syscap SystemCapability.Communication.NetStack
1849      * @crossplatform
1850      * @since 10
1851      */
1852     getRemoteCertificate(callback: AsyncCallback<X509CertRawData>): void;
1853 
1854     /**
1855      * <p>Returns an object representing the peer certificate. If the peer does not provide a certificate,
1856      * <p>an empty object will be returned. If the socket is destroyed, null is returned.</p>
1857      * It only contains the peer's certificate.
1858      * @returns { Promise<X509CertRawData> } The promise returned by the function.
1859      * @throws { BusinessError } 2303501 - SSL is null.
1860      * @throws { BusinessError } 2300002 - System internal error.
1861      * @syscap SystemCapability.Communication.NetStack
1862      * @since 9
1863      */
1864     /**
1865      * <p>Returns an object representing the peer certificate. If the peer does not provide a certificate,
1866      * <p>an empty object will be returned. If the socket is destroyed, null is returned.</p>
1867      * It only contains the peer's certificate.
1868      * @returns { Promise<X509CertRawData> } The promise returned by the function.
1869      * @throws { BusinessError } 2303501 - SSL is null.
1870      * @throws { BusinessError } 2300002 - System internal error.
1871      * @syscap SystemCapability.Communication.NetStack
1872      * @crossplatform
1873      * @since 10
1874      */
1875     getRemoteCertificate(): Promise<X509CertRawData>;
1876 
1877     /**
1878      * Returns a string containing the negotiated SSL/TLS protocol version of the current connection.
1879      * For connected sockets that have not completed the handshake process, the value 'unknown' will be returned.
1880      * Server sockets or disconnected client sockets will return a value of null.
1881      * @param { AsyncCallback<string> } callback - the callback of getProtocol.
1882      * @throws { BusinessError } 2303501 - SSL is null.
1883      * @throws { BusinessError } 2303505 - Error occurred in the tls system call.
1884      * @throws { BusinessError } 2300002 - System internal error.
1885      * @syscap SystemCapability.Communication.NetStack
1886      * @since 9
1887      */
1888     /**
1889      * Returns a string containing the negotiated SSL/TLS protocol version of the current connection.
1890      * For connected sockets that have not completed the handshake process, the value 'unknown' will be returned.
1891      * Server sockets or disconnected client sockets will return a value of null.
1892      * @param { AsyncCallback<string> } callback - the callback of getProtocol.
1893      * @throws { BusinessError } 2303501 - SSL is null.
1894      * @throws { BusinessError } 2303505 - Error occurred in the tls system call.
1895      * @throws { BusinessError } 2300002 - System internal error.
1896      * @syscap SystemCapability.Communication.NetStack
1897      * @crossplatform
1898      * @since 10
1899      */
1900     getProtocol(callback: AsyncCallback<string>): void;
1901 
1902     /**
1903      * Returns a string containing the negotiated SSL/TLS protocol version of the current connection.
1904      * For connected sockets that have not completed the handshake process, the value 'unknown' will be returned.
1905      * Server sockets or disconnected client sockets will return a value of null.
1906      * @returns { Promise<string> } The promise returned by the function.
1907      * @throws { BusinessError } 2303501 - SSL is null.
1908      * @throws { BusinessError } 2303505 - Error occurred in the tls system call.
1909      * @throws { BusinessError } 2300002 - System internal error.
1910      * @syscap SystemCapability.Communication.NetStack
1911      * @since 9
1912      */
1913     /**
1914      * Returns a string containing the negotiated SSL/TLS protocol version of the current connection.
1915      * For connected sockets that have not completed the handshake process, the value 'unknown' will be returned.
1916      * Server sockets or disconnected client sockets will return a value of null.
1917      * @returns { Promise<string> } The promise returned by the function.
1918      * @throws { BusinessError } 2303501 - SSL is null.
1919      * @throws { BusinessError } 2303505 - Error occurred in the tls system call.
1920      * @throws { BusinessError } 2300002 - System internal error.
1921      * @syscap SystemCapability.Communication.NetStack
1922      * @crossplatform
1923      * @since 10
1924      */
1925     getProtocol(): Promise<string>;
1926 
1927     /**
1928      * Returns a list containing the negotiated cipher suite information.
1929      * For example:{"TLS_RSA_WITH_AES_128_CBC_SHA256", "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256"}
1930      * @param { AsyncCallback<Array<string>> } callback - the callback of getCipherSuite.
1931      * @throws { BusinessError } 2303501 - SSL is null.
1932      * @throws { BusinessError } 2303502 - Error in tls reading.
1933      * @throws { BusinessError } 2303505 - Error occurred in the tls system call.
1934      * @throws { BusinessError } 2300002 - System internal error.
1935      * @syscap SystemCapability.Communication.NetStack
1936      * @since 9
1937      */
1938     /**
1939      * Returns a list containing the negotiated cipher suite information.
1940      * For example:{"TLS_RSA_WITH_AES_128_CBC_SHA256", "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256"}
1941      * @param { AsyncCallback<Array<string>> } callback - the callback of getCipherSuite.
1942      * @throws { BusinessError } 2303501 - SSL is null.
1943      * @throws { BusinessError } 2303502 - Error in tls reading.
1944      * @throws { BusinessError } 2303505 - Error occurred in the tls system call.
1945      * @throws { BusinessError } 2300002 - System internal error.
1946      * @syscap SystemCapability.Communication.NetStack
1947      * @crossplatform
1948      * @since 10
1949      */
1950     getCipherSuite(callback: AsyncCallback<Array<string>>): void;
1951 
1952     /**
1953      * Returns a list containing the negotiated cipher suite information.
1954      * For example:{"TLS_RSA_WITH_AES_128_CBC_SHA256", "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256"}
1955      * @returns { Promise<Array<string>> } The promise returned by the function.
1956      * @throws { BusinessError } 2303501 - SSL is null.
1957      * @throws { BusinessError } 2303502 - Error in tls reading.
1958      * @throws { BusinessError } 2303505 - Error occurred in the tls system call.
1959      * @throws { BusinessError } 2300002 - System internal error.
1960      * @syscap SystemCapability.Communication.NetStack
1961      * @since 9
1962      */
1963     /**
1964      * Returns a list containing the negotiated cipher suite information.
1965      * For example:{"TLS_RSA_WITH_AES_128_CBC_SHA256", "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256"}
1966      * @returns { Promise<Array<string>> } The promise returned by the function.
1967      * @throws { BusinessError } 2303501 - SSL is null.
1968      * @throws { BusinessError } 2303502 - Error in tls reading.
1969      * @throws { BusinessError } 2303505 - Error occurred in the tls system call.
1970      * @throws { BusinessError } 2300002 - System internal error.
1971      * @syscap SystemCapability.Communication.NetStack
1972      * @crossplatform
1973      * @since 10
1974      */
1975     getCipherSuite(): Promise<Array<string>>;
1976 
1977     /**
1978      * <p>The list of signature algorithms shared between the server and the client,
1979      * in descending order of priority.</p>
1980      * @param { AsyncCallback<Array<string>> } callback - the callback of getSignatureAlgorithms.@see https://www.openssl.org/docs/man1.1.1/man3/SSL_get_shared_sigalgs.html
1981      * @throws { BusinessError } 2303501 - SSL is null.
1982      * @throws { BusinessError } 2300002 - System internal error.
1983      * @syscap SystemCapability.Communication.NetStack
1984      * @since 9
1985      */
1986     /**
1987      * <p>The list of signature algorithms shared between the server and the client,
1988      * in descending order of priority.</p>
1989      * @param { AsyncCallback<Array<string>> } callback - the callback of getSignatureAlgorithms.@see https://www.openssl.org/docs/man1.1.1/man3/SSL_get_shared_sigalgs.html
1990      * @throws { BusinessError } 2303501 - SSL is null.
1991      * @throws { BusinessError } 2300002 - System internal error.
1992      * @syscap SystemCapability.Communication.NetStack
1993      * @crossplatform
1994      * @since 10
1995      */
1996     getSignatureAlgorithms(callback: AsyncCallback<Array<string>>): void;
1997 
1998     /**
1999      * <p>The list of signature algorithms shared between the server and the client,
2000      * in descending order of priority.</p>
2001      * @returns { Promise<Array<string>> } The promise returned by the function.@see https://www.openssl.org/docs/man1.1.1/man3/SSL_get_shared_sigalgs.html
2002      * @throws { BusinessError } 2303501 - SSL is null.
2003      * @throws { BusinessError } 2300002 - System internal error.
2004      * @syscap SystemCapability.Communication.NetStack
2005      * @since 9
2006      */
2007     /**
2008      * <p>The list of signature algorithms shared between the server and the client,
2009      * in descending order of priority.</p>
2010      * @returns { Promise<Array<string>> } The promise returned by the function.@see https://www.openssl.org/docs/man1.1.1/man3/SSL_get_shared_sigalgs.html
2011      * @throws { BusinessError } 2303501 - SSL is null.
2012      * @throws { BusinessError } 2300002 - System internal error.
2013      * @syscap SystemCapability.Communication.NetStack
2014      * @crossplatform
2015      * @since 10
2016      */
2017     getSignatureAlgorithms(): Promise<Array<string>>;
2018 
2019     /**
2020      * Sets up a connection to the specified IP address and port number.
2021      * Only TCP is supported.
2022      * @param { TLSConnectOptions } options - Optional parameters {@link TLSConnectOptions}.
2023      * @param { AsyncCallback<void> } callback - the callback of connect.
2024      * @throws { BusinessError } 401 - Parameter error.
2025      * @throws { BusinessError } 2303104 - Interrupted system call.
2026      * @throws { BusinessError } 2303109 - Bad file number.
2027      * @throws { BusinessError } 2303111 - Resource temporarily unavailable try again.
2028      * @throws { BusinessError } 2303188 - Socket operation on non-socket.
2029      * @throws { BusinessError } 2303191 - Protocol wrong type for socket.
2030      * @throws { BusinessError } 2303198 - Address already in use.
2031      * @throws { BusinessError } 2303199 - Cannot assign requested address.
2032      * @throws { BusinessError } 2303210 - Connection timed out.
2033      * @throws { BusinessError } 2303501 - SSL is null.
2034      * @throws { BusinessError } 2303502 - Error in tls reading.
2035      * @throws { BusinessError } 2303503 - Error in tls writing
2036      * @throws { BusinessError } 2303505 - Error occurred in the tls system call.
2037      * @throws { BusinessError } 2303506 - Error clearing tls connection.
2038      * @throws { BusinessError } 2300002 - System internal error.
2039      * @syscap SystemCapability.Communication.NetStack
2040      * @since 9
2041      */
2042     /**
2043      * Sets up a connection to the specified IP address and port number.
2044      * Only TCP is supported.
2045      * @param { TLSConnectOptions } options - Optional parameters {@link TLSConnectOptions}.
2046      * @param { AsyncCallback<void> } callback - the callback of connect.
2047      * @throws { BusinessError } 401 - Parameter error.
2048      * @throws { BusinessError } 2303104 - Interrupted system call.
2049      * @throws { BusinessError } 2303109 - Bad file number.
2050      * @throws { BusinessError } 2303111 - Resource temporarily unavailable try again.
2051      * @throws { BusinessError } 2303188 - Socket operation on non-socket.
2052      * @throws { BusinessError } 2303191 - Protocol wrong type for socket.
2053      * @throws { BusinessError } 2303198 - Address already in use.
2054      * @throws { BusinessError } 2303199 - Cannot assign requested address.
2055      * @throws { BusinessError } 2303210 - Connection timed out.
2056      * @throws { BusinessError } 2303501 - SSL is null.
2057      * @throws { BusinessError } 2303502 - Error in tls reading.
2058      * @throws { BusinessError } 2303503 - Error in tls writing
2059      * @throws { BusinessError } 2303505 - Error occurred in the tls system call.
2060      * @throws { BusinessError } 2303506 - Error clearing tls connection.
2061      * @throws { BusinessError } 2300002 - System internal error.
2062      * @syscap SystemCapability.Communication.NetStack
2063      * @crossplatform
2064      * @since 10
2065      */
2066     connect(options: TLSConnectOptions, callback: AsyncCallback<void>): void;
2067 
2068     /**
2069      * Sets up a connection to the specified IP address and port number.
2070      * Only TCP is supported.
2071      * @param { TLSConnectOptions } options - Optional parameters {@link TLSConnectOptions}.
2072      * @returns { Promise<void> } The promise returned by the function.
2073      * @throws { BusinessError } 401 - Parameter error.
2074      * @throws { BusinessError } 2303104 - Interrupted system call.
2075      * @throws { BusinessError } 2303109 - Bad file number.
2076      * @throws { BusinessError } 2303111 - Resource temporarily unavailable try again.
2077      * @throws { BusinessError } 2303188 - Socket operation on non-socket.
2078      * @throws { BusinessError } 2303191 - Protocol wrong type for socket.
2079      * @throws { BusinessError } 2303198 - Address already in use.
2080      * @throws { BusinessError } 2303199 - Cannot assign requested address.
2081      * @throws { BusinessError } 2303210 - Connection timed out.
2082      * @throws { BusinessError } 2303501 - SSL is null.
2083      * @throws { BusinessError } 2303502 - Error in tls reading.
2084      * @throws { BusinessError } 2303503 - Error in tls writing
2085      * @throws { BusinessError } 2303505 - Error occurred in the tls system call.
2086      * @throws { BusinessError } 2303506 - Error clearing tls connection.
2087      * @throws { BusinessError } 2300002 - System internal error.
2088      * @syscap SystemCapability.Communication.NetStack
2089      * @since 9
2090      */
2091     /**
2092      * Sets up a connection to the specified IP address and port number.
2093      * Only TCP is supported.
2094      * @param { TLSConnectOptions } options - Optional parameters {@link TLSConnectOptions}.
2095      * @returns { Promise<void> } The promise returned by the function.
2096      * @throws { BusinessError } 401 - Parameter error.
2097      * @throws { BusinessError } 2303104 - Interrupted system call.
2098      * @throws { BusinessError } 2303109 - Bad file number.
2099      * @throws { BusinessError } 2303111 - Resource temporarily unavailable try again.
2100      * @throws { BusinessError } 2303188 - Socket operation on non-socket.
2101      * @throws { BusinessError } 2303191 - Protocol wrong type for socket.
2102      * @throws { BusinessError } 2303198 - Address already in use.
2103      * @throws { BusinessError } 2303199 - Cannot assign requested address.
2104      * @throws { BusinessError } 2303210 - Connection timed out.
2105      * @throws { BusinessError } 2303501 - SSL is null.
2106      * @throws { BusinessError } 2303502 - Error in tls reading.
2107      * @throws { BusinessError } 2303503 - Error in tls writing
2108      * @throws { BusinessError } 2303505 - Error occurred in the tls system call.
2109      * @throws { BusinessError } 2303506 - Error clearing tls connection.
2110      * @throws { BusinessError } 2300002 - System internal error.
2111      * @syscap SystemCapability.Communication.NetStack
2112      * @crossplatform
2113      * @since 10
2114      */
2115     connect(options: TLSConnectOptions): Promise<void>;
2116 
2117     /**
2118      * Sends data over a TLSSocket connection.
2119      * @param { string } data - Optional parameters {@link string}.
2120      * @param { AsyncCallback<void> } callback - the callback of send.
2121      * @throws { BusinessError } 401 - Parameter error.
2122      * @throws { BusinessError } 2303501 - SSL is null.
2123      * @throws { BusinessError } 2303503 - Error in tls writing.
2124      * @throws { BusinessError } 2303505 - Error occurred in the tls system call.
2125      * @throws { BusinessError } 2303506 - Error clearing tls connection.
2126      * @throws { BusinessError } 2300002 - System internal error.
2127      * @syscap SystemCapability.Communication.NetStack
2128      * @since 9
2129      */
2130     /**
2131      * Sends data over a TLSSocket connection.
2132      * @param { string } data - Optional parameters {@link string}.
2133      * @param { AsyncCallback<void> } callback - the callback of send.
2134      * @throws { BusinessError } 401 - Parameter error.
2135      * @throws { BusinessError } 2303501 - SSL is null.
2136      * @throws { BusinessError } 2303503 - Error in tls writing.
2137      * @throws { BusinessError } 2303505 - Error occurred in the tls system call.
2138      * @throws { BusinessError } 2303506 - Error clearing tls connection.
2139      * @throws { BusinessError } 2300002 - System internal error.
2140      * @syscap SystemCapability.Communication.NetStack
2141      * @crossplatform
2142      * @since 10
2143      */
2144     send(data: string, callback: AsyncCallback<void>): void;
2145 
2146     /**
2147      * Sends data over a TLSSocket connection.
2148      * @param { string } data - Optional parameters {@link string}.
2149      * @returns { Promise<void> } The promise returned by the function.
2150      * @throws { BusinessError } 401 - Parameter error.
2151      * @throws { BusinessError } 2303501 - SSL is null.
2152      * @throws { BusinessError } 2303503 - Error in tls writing.
2153      * @throws { BusinessError } 2303505 - Error occurred in the tls system call.
2154      * @throws { BusinessError } 2303506 - Error clearing tls connection.
2155      * @throws { BusinessError } 2300002 - System internal error.
2156      * @syscap SystemCapability.Communication.NetStack
2157      * @since 9
2158      */
2159     /**
2160      * Sends data over a TLSSocket connection.
2161      * @param { string } data - Optional parameters {@link string}.
2162      * @returns { Promise<void> } The promise returned by the function.
2163      * @throws { BusinessError } 401 - Parameter error.
2164      * @throws { BusinessError } 2303501 - SSL is null.
2165      * @throws { BusinessError } 2303503 - Error in tls writing.
2166      * @throws { BusinessError } 2303505 - Error occurred in the tls system call.
2167      * @throws { BusinessError } 2303506 - Error clearing tls connection.
2168      * @throws { BusinessError } 2300002 - System internal error.
2169      * @syscap SystemCapability.Communication.NetStack
2170      * @crossplatform
2171      * @since 10
2172      */
2173     send(data: string): Promise<void>;
2174 
2175     /**
2176      * Closes a TLSSocket connection
2177      * @param { AsyncCallback<void> } callback - the callback of close.
2178      * @throws { BusinessError } 401 - Parameter error.
2179      * @throws { BusinessError } 2303501 - SSL is null.
2180      * @throws { BusinessError } 2303505 - Error occurred in the tls system call.
2181      * @throws { BusinessError } 2303506 - Error clearing tls connection.
2182      * @throws { BusinessError } 2300002 - System internal error.
2183      * @syscap SystemCapability.Communication.NetStack
2184      * @since 9
2185      */
2186     /**
2187      * Closes a TLSSocket connection
2188      * @param { AsyncCallback<void> } callback - the callback of close.
2189      * @throws { BusinessError } 401 - Parameter error.
2190      * @throws { BusinessError } 2303501 - SSL is null.
2191      * @throws { BusinessError } 2303505 - Error occurred in the tls system call.
2192      * @throws { BusinessError } 2303506 - Error clearing tls connection.
2193      * @throws { BusinessError } 2300002 - System internal error.
2194      * @syscap SystemCapability.Communication.NetStack
2195      * @crossplatform
2196      * @since 10
2197      */
2198     close(callback: AsyncCallback<void>): void;
2199 
2200     /**
2201      * Closes a TLSSocket connection
2202      * @returns { Promise<void> } The promise returned by the function.
2203      * @throws { BusinessError } 401 - Parameter error.
2204      * @throws { BusinessError } 2303501 - SSL is null.
2205      * @throws { BusinessError } 2303505 - Error occurred in the tls system call.
2206      * @throws { BusinessError } 2303506 - Error clearing tls connection.
2207      * @throws { BusinessError } 2300002 - System internal error.
2208      * @syscap SystemCapability.Communication.NetStack
2209      * @since 9
2210      */
2211     /**
2212      * Closes a TLSSocket connection
2213      * @returns { Promise<void> } The promise returned by the function.
2214      * @throws { BusinessError } 401 - Parameter error.
2215      * @throws { BusinessError } 2303501 - SSL is null.
2216      * @throws { BusinessError } 2303505 - Error occurred in the tls system call.
2217      * @throws { BusinessError } 2303506 - Error clearing tls connection.
2218      * @throws { BusinessError } 2300002 - System internal error.
2219      * @syscap SystemCapability.Communication.NetStack
2220      * @crossplatform
2221      * @since 10
2222      */
2223     close(): Promise<void>;
2224   }
2225 
2226   /**
2227    * Defines TLS security options. The CA certificate is mandatory, and other parameters are optional.
2228    * @interface TLSSecureOptions
2229    * @syscap SystemCapability.Communication.NetStack
2230    * @since 9
2231    */
2232   /**
2233    * Defines TLS security options. The CA certificate is mandatory, and other parameters are optional.
2234    * @interface TLSSecureOptions
2235    * @syscap SystemCapability.Communication.NetStack
2236    * @crossplatform
2237    * @since 10
2238    */
2239   export interface TLSSecureOptions {
2240     /**
2241      * Certificate used to verify the identity of the server
2242      * @type {string | Array<string>}
2243      * @syscap SystemCapability.Communication.NetStack
2244      * @since 9
2245      */
2246     /**
2247      * Certificate used to verify the identity of the server
2248      * @type {string | Array<string>}
2249      * @syscap SystemCapability.Communication.NetStack
2250      * @crossplatform
2251      * @since 10
2252      */
2253     ca: string | Array<string>;
2254 
2255     /**
2256      * Certificate proving the identity of the client
2257      * @type {?string}
2258      * @syscap SystemCapability.Communication.NetStack
2259      * @since 9
2260      */
2261     /**
2262      * Certificate proving the identity of the client
2263      * @type {?string}
2264      * @syscap SystemCapability.Communication.NetStack
2265      * @crossplatform
2266      * @since 10
2267      */
2268     cert?: string;
2269 
2270     /**
2271      * Private key of client certificate
2272      * @type {?string}
2273      * @syscap SystemCapability.Communication.NetStack
2274      * @since 9
2275      */
2276     /**
2277      * Private key of client certificate
2278      * @type {?string}
2279      * @syscap SystemCapability.Communication.NetStack
2280      * @crossplatform
2281      * @since 10
2282      */
2283     key?: string;
2284 
2285     /**
2286      * Password of the private key
2287      * @type {?string}
2288      * @syscap SystemCapability.Communication.NetStack
2289      * @since 9
2290      */
2291     /**
2292      * Password of the private key
2293      * @type {?string}
2294      * @syscap SystemCapability.Communication.NetStack
2295      * @crossplatform
2296      * @since 10
2297      */
2298     password?: string;
2299 
2300     /**
2301      * TLS protocol version
2302      * @type {?Protocol | Array<Protocol>}
2303      * @syscap SystemCapability.Communication.NetStack
2304      * @since 9
2305      */
2306     /**
2307      * TLS protocol version
2308      * @type {?Protocol | Array<Protocol>}
2309      * @syscap SystemCapability.Communication.NetStack
2310      * @crossplatform
2311      * @since 10
2312      */
2313     protocols?: Protocol | Array<Protocol>;
2314 
2315     /**
2316      * default is false, use local cipher.
2317      * @type {?boolean}
2318      * @syscap SystemCapability.Communication.NetStack
2319      * @since 9
2320      */
2321     /**
2322      * default is false, use local cipher.
2323      * @type {?boolean}
2324      * @syscap SystemCapability.Communication.NetStack
2325      * @crossplatform
2326      * @since 10
2327      */
2328     useRemoteCipherPrefer?: boolean;
2329 
2330     /**
2331      * <P>Supported signature algorithms. This string can contain summary algorithms(SHA256,MD5,etc),Public key algorithm(RSA-PSS,ECDSA,etc),
2332      * Combination of the two(For example 'RSA+SHA384') or TLS v1.3 Scheme name(For example  rsa_pss_pss_sha512)</P>
2333      * @type {?string}
2334      * @syscap SystemCapability.Communication.NetStack
2335      * @since 9
2336      */
2337     /**
2338      * <P>Supported signature algorithms. This string can contain summary algorithms(SHA256,MD5,etc),Public key algorithm(RSA-PSS,ECDSA,etc),
2339      * Combination of the two(For example 'RSA+SHA384') or TLS v1.3 Scheme name(For example  rsa_pss_pss_sha512)</P>
2340      * @type {?string}
2341      * @syscap SystemCapability.Communication.NetStack
2342      * @crossplatform
2343      * @since 10
2344      */
2345     signatureAlgorithms?: string;
2346 
2347     /**
2348      * Crypto suite specification
2349      * @type {?string}
2350      * @syscap SystemCapability.Communication.NetStack
2351      * @since 9
2352      */
2353     /**
2354      * Crypto suite specification
2355      * @type {?string}
2356      * @syscap SystemCapability.Communication.NetStack
2357      * @crossplatform
2358      * @since 10
2359      */
2360     cipherSuite?: string;
2361   }
2362 
2363   /**
2364    * Defines TLS connection options.
2365    * @interface TLSConnectOptions
2366    * @syscap SystemCapability.Communication.NetStack
2367    * @since 9
2368    */
2369   /**
2370    * Defines TLS connection options.
2371    * @interface TLSConnectOptions
2372    * @syscap SystemCapability.Communication.NetStack
2373    * @crossplatform
2374    * @since 10
2375    */
2376   export interface TLSConnectOptions {
2377     /**
2378      * Gateway address.
2379      * @type {NetAddress}
2380      * @syscap SystemCapability.Communication.NetStack
2381      * @since 9
2382      */
2383     /**
2384      * Gateway address.
2385      * @type {NetAddress}
2386      * @syscap SystemCapability.Communication.NetStack
2387      * @crossplatform
2388      * @since 10
2389      */
2390     address: NetAddress;
2391 
2392     /**
2393      * Protocol http2TLS security related operations.
2394      * @type {TLSSecureOptions}
2395      * @syscap SystemCapability.Communication.NetStack
2396      * @since 9
2397      */
2398     /**
2399      * Protocol http2TLS security related operations.
2400      * @type {TLSSecureOptions}
2401      * @syscap SystemCapability.Communication.NetStack
2402      * @crossplatform
2403      * @since 10
2404      */
2405     secureOptions: TLSSecureOptions;
2406 
2407     /**
2408      * Application layer protocol negotiation extension, such as "spdy/1", "http/1.1", "h2"
2409      * @type {?Array<string>}
2410      * @syscap SystemCapability.Communication.NetStack
2411      * @since 9
2412      */
2413     /**
2414      * Application layer protocol negotiation extension, such as "spdy/1", "http/1.1", "h2"
2415      * @type {?Array<string>}
2416      * @syscap SystemCapability.Communication.NetStack
2417      * @crossplatform
2418      * @since 10
2419      */
2420     ALPNProtocols?: Array<string>;
2421   }
2422 
2423   /**
2424    * Enumerates TLS protocol versions.
2425    * @enum {string}
2426    * @syscap SystemCapability.Communication.NetStack
2427    * @since 9
2428    */
2429   /**
2430    * Enumerates TLS protocol versions.
2431    * @enum {string}
2432    * @syscap SystemCapability.Communication.NetStack
2433    * @crossplatform
2434    * @since 10
2435    */
2436   export enum Protocol {
2437     /**
2438      * Use TLSv1.2 protocol for communication.
2439      * @syscap SystemCapability.Communication.NetStack
2440      * @since 9
2441      */
2442     /**
2443      * Use TLSv1.2 protocol for communication.
2444      * @syscap SystemCapability.Communication.NetStack
2445      * @crossplatform
2446      * @since 10
2447      */
2448     TLSv12 = "TLSv1.2",
2449 
2450     /**
2451      * Use TLSv1.3 protocol for communication.
2452      * @syscap SystemCapability.Communication.NetStack
2453      * @since 9
2454      */
2455     /**
2456      * Use TLSv1.3 protocol for communication.
2457      * @syscap SystemCapability.Communication.NetStack
2458      * @crossplatform
2459      * @since 10
2460      */
2461     TLSv13 = "TLSv1.3"
2462   }
2463 
2464   /**
2465    * Defines the connection of the TCPSocket client and server.
2466    * @interface TCPSocketConnection
2467    * @syscap SystemCapability.Communication.NetStack
2468    * @since 10
2469    */
2470   export interface TCPSocketConnection {
2471     /**
2472      * The id of a client connects to the TCPSocketServer.
2473      * @type {number}
2474      * @syscap SystemCapability.Communication.NetStack
2475      * @since 10
2476      */
2477     clientId: number;
2478 
2479     /**
2480      * Sends data over a TCPSocketServer connection to client.
2481      * @permission ohos.permission.INTERNET
2482      * @param { TCPSendOptions } options - Parameters for sending data {@link TCPSendOptions}.
2483      * @param { AsyncCallback<void> } callback - The callback of send.
2484      * @throws { BusinessError } 201 - Permission denied.
2485      * @throws { BusinessError } 401 - Parameter error.
2486      * @throws { BusinessError } 2300002 - System internal error.
2487      * @syscap SystemCapability.Communication.NetStack
2488      * @since 10
2489      */
2490     send(options: TCPSendOptions, callback: AsyncCallback<void>): void;
2491 
2492     /**
2493      * Sends data over a TCPSocketServer connection to client.
2494      * @permission ohos.permission.INTERNET
2495      * @param { TCPSendOptions } options - Parameters for sending data {@link TCPSendOptions}.
2496      * @returns { Promise<void> } The promise returned by the function.
2497      * @throws { BusinessError } 201 - Permission denied.
2498      * @throws { BusinessError } 401 - Parameter error.
2499      * @throws { BusinessError } 2300002 - System internal error.
2500      * @syscap SystemCapability.Communication.NetStack
2501      * @since 10
2502      */
2503     send(options: TCPSendOptions): Promise<void>;
2504 
2505     /**
2506      * Closes a TCPSocket client connection.
2507      * @permission ohos.permission.INTERNET
2508      * @param { AsyncCallback<void> } callback - The callback of close.
2509      * @throws { BusinessError } 201 - Permission denied.
2510      * @throws { BusinessError } 401 - Parameter error.
2511      * @throws { BusinessError } 2300002 - System internal error.
2512      * @syscap SystemCapability.Communication.NetStack
2513      * @since 10
2514      */
2515     close(callback: AsyncCallback<void>): void;
2516 
2517     /**
2518      * Closes a TCPSocket client connection.
2519      * @permission ohos.permission.INTERNET
2520      * @returns { Promise<void> } The promise returned by the function.
2521      * @throws { BusinessError } 201 - Permission denied.
2522      * @throws { BusinessError } 2300002 - System internal error.
2523      * @syscap SystemCapability.Communication.NetStack
2524      * @since 10
2525      */
2526     close(): Promise<void>;
2527 
2528     /**
2529      * Obtains the peer address of a TCPSocketServer connection.
2530      * @permission ohos.permission.INTERNET
2531      * @param { AsyncCallback<NetAddress> } callback - The callback of getRemoteAddress.
2532      * @throws { BusinessError } 201 - Permission denied.
2533      * @throws { BusinessError } 401 - Parameter error.
2534      * @throws { BusinessError } 2300002 - System internal error.
2535      * @throws { BusinessError } 2303188 - Socket operation on non-socket.
2536      * @syscap SystemCapability.Communication.NetStack
2537      * @since 10
2538      */
2539     getRemoteAddress(callback: AsyncCallback<NetAddress>): void;
2540 
2541     /**
2542      * Obtains the peer address of a TCPSocketServer connection.
2543      * @permission ohos.permission.INTERNET
2544      * @returns { Promise<NetAddress> } The promise returned by the function.
2545      * @throws { BusinessError } 201 - Permission denied.
2546      * @throws { BusinessError } 2300002 - System internal error.
2547      * @throws { BusinessError } 2303188 - Socket operation on non-socket.
2548      * @syscap SystemCapability.Communication.NetStack
2549      * @since 10
2550      */
2551     getRemoteAddress(): Promise<NetAddress>;
2552 
2553     /**
2554      * Listens for message receiving events of the TCPSocketConnection.
2555      * @param { 'message' } type - Indicates Event name.
2556      * @param { Callback<{ message: ArrayBuffer, remoteInfo: SocketRemoteInfo }> } callback - The callback of on.
2557      * @throws { BusinessError } 401 - Parameter error.
2558      * @syscap SystemCapability.Communication.NetStack
2559      * @since 10
2560      */
2561     on(type: 'message', callback: Callback<{ message: ArrayBuffer, remoteInfo: SocketRemoteInfo }>): void;
2562 
2563     /**
2564      * Cancels listening for message receiving events of the TCPSocketConnection.
2565      * @param { 'message' } type - Indicates Event name.
2566      * @param { Callback<{ message: ArrayBuffer, remoteInfo: SocketRemoteInfo }> } callback - The callback of off.
2567      * @throws { BusinessError } 401 - Parameter error.
2568      * @syscap SystemCapability.Communication.NetStack
2569      * @since 10
2570      */
2571     off(type: 'message', callback?: Callback<{ message: ArrayBuffer, remoteInfo: SocketRemoteInfo }>): void;
2572 
2573     /**
2574      * Listens for close events of the TCPSocketConnection.
2575      * @param { 'close' } type - Indicates Event name.
2576      * @param { Callback<void> } callback - The callback of on.
2577      * @throws { BusinessError } 401 - Parameter error.
2578      * @syscap SystemCapability.Communication.NetStack
2579      * @since 10
2580      */
2581     on(type: 'close', callback: Callback<void>): void;
2582 
2583     /**
2584      * Cancels listening for close events of the TCPSocketConnection.
2585      * @param { 'close' } type - Indicates Event name.
2586      * @param { Callback<void> } callback - The callback of off.
2587      * @throws { BusinessError } 401 - Parameter error.
2588      * @syscap SystemCapability.Communication.NetStack
2589      * @since 10
2590      */
2591     off(type: 'close', callback?: Callback<void>): void;
2592 
2593     /**
2594      * Listens for error events of the TCPSocketConnection.
2595      * @param { 'error' } type - Indicates Event name.
2596      * @param { ErrorCallback } callback - The callback of on.
2597      * @throws { BusinessError } 401 - Parameter error.
2598      * @syscap SystemCapability.Communication.NetStack
2599      * @since 10
2600      */
2601     on(type: 'error', callback: ErrorCallback): void;
2602 
2603     /**
2604      * Cancels listening for error events of the TCPSocketConnection.
2605      * @param { 'error' } type - Indicates Event name.
2606      * @param { ErrorCallback } callback - The callback of off.
2607      * @throws { BusinessError } 401 - Parameter error.
2608      * @syscap SystemCapability.Communication.NetStack
2609      * @since 10
2610      */
2611     off(type: 'error', callback?: ErrorCallback): void;
2612   }
2613 
2614   /**
2615    * Defines a TCPSocket server connection.
2616    * @interface TCPSocketServer
2617    * @syscap SystemCapability.Communication.NetStack
2618    * @since 10
2619    */
2620   export interface TCPSocketServer {
2621     /**
2622      * Binds the IP address and port number, the port number can be specified or randomly allocated by the system.
2623      * <p>Listens for a TCPSocket connection to be made to this socket and accepts it. This interface uses multiple threads
2624      * for accept processing and uses poll multiplex to process client connections.</p>
2625      * @permission ohos.permission.INTERNET
2626      * @param { NetAddress } address - Network address information {@link NetAddress}.
2627      * @param { AsyncCallback<void> } callback - The callback of listen.
2628      * @throws { BusinessError } 401 - Parameter error.
2629      * @throws { BusinessError } 201 - Permission denied.
2630      * @throws { BusinessError } 2300002 - System internal error.
2631      * @throws { BusinessError } 2303109 - Bad file number.
2632      * @throws { BusinessError } 2303111 - Resource temporarily unavailable try again.
2633      * @throws { BusinessError } 2303198 - Address already in use.
2634      * @throws { BusinessError } 2303199 - Cannot assign requested address.
2635      * @syscap SystemCapability.Communication.NetStack
2636      * @since 10
2637      */
2638     listen(address: NetAddress, callback: AsyncCallback<void>): void;
2639 
2640     /**
2641      * Binds the IP address and port number, the port number can be specified or randomly allocated by the system.
2642      * <p>Listens for a TCPSocket connection to be made to this socket and accepts it. This interface uses multiple threads
2643      * for accept processing and uses poll multiplex to process client connections.</p>
2644      * @permission ohos.permission.INTERNET
2645      * @param { NetAddress } address - Network address information {@link NetAddress}.
2646      * @returns { Promise<void> } The promise returned by the function.
2647      * @throws { BusinessError } 401 - Parameter error.
2648      * @throws { BusinessError } 201 - Permission denied.
2649      * @throws { BusinessError } 2300002 - System internal error.
2650      * @throws { BusinessError } 2303109 - Bad file number.
2651      * @throws { BusinessError } 2303111 - Resource temporarily unavailable try again.
2652      * @throws { BusinessError } 2303198 - Address already in use.
2653      * @throws { BusinessError } 2303199 - Cannot assign requested address.
2654      * @syscap SystemCapability.Communication.NetStack
2655      * @since 10
2656      */
2657     listen(address: NetAddress): Promise<void>;
2658 
2659     /**
2660      * Obtains the status of the TCPSocketServer connection.
2661      * @permission ohos.permission.INTERNET
2662      * @param { AsyncCallback<SocketStateBase> } callback - The callback of getState.
2663      * @throws { BusinessError } 201 - Permission denied.
2664      * @throws { BusinessError } 401 - Parameter error.
2665      * @throws { BusinessError } 2300002 - System internal error.
2666      * @throws { BusinessError } 2303188 - Socket operation on non-socket.
2667      * @syscap SystemCapability.Communication.NetStack
2668      * @since 10
2669      */
2670     getState(callback: AsyncCallback<SocketStateBase>): void;
2671 
2672     /**
2673      * Obtains the status of the TCPSocketServer connection.
2674      * @permission ohos.permission.INTERNET
2675      * @returns { Promise<SocketStateBase> } The promise returned by the function.
2676      * @throws { BusinessError } 201 - Permission denied.
2677      * @throws { BusinessError } 2300002 - System internal error.
2678      * @throws { BusinessError } 2303188 - Socket operation on non-socket.
2679      * @syscap SystemCapability.Communication.NetStack
2680      * @since 10
2681      */
2682     getState(): Promise<SocketStateBase>;
2683 
2684     /**
2685      * Sets other attributes of the TCPSocketServer connection.
2686      * @permission ohos.permission.INTERNET
2687      * @param { TCPExtraOptions } options - Parameters of the attributes {@link TCPExtraOptions}.
2688      * @param { AsyncCallback<void> } callback - The callback of setExtraOptions.
2689      * @throws { BusinessError } 201 - Permission denied.
2690      * @throws { BusinessError } 401 - Parameter error.
2691      * @throws { BusinessError } 2300002 - System internal error.
2692      * @throws { BusinessError } 2303188 - Socket operation on non-socket.
2693      * @syscap SystemCapability.Communication.NetStack
2694      * @since 10
2695      */
2696     setExtraOptions(options: TCPExtraOptions, callback: AsyncCallback<void>): void;
2697 
2698     /**
2699      * Sets other attributes of the TCPSocketServer connection.
2700      * @permission ohos.permission.INTERNET
2701      * @param { TCPExtraOptions } options - Parameters of the attributes {@link TCPExtraOptions}.
2702      * @returns { Promise<void> } The promise returned by the function.
2703      * @throws { BusinessError } 201 - Permission denied.
2704      * @throws { BusinessError } 401 - Parameter error.
2705      * @throws { BusinessError } 2300002 - System internal error.
2706      * @throws { BusinessError } 2303188 - Socket operation on non-socket.
2707      * @syscap SystemCapability.Communication.NetStack
2708      * @since 10
2709      */
2710     setExtraOptions(options: TCPExtraOptions): Promise<void>;
2711 
2712     /**
2713      * Listens for connect events of the TCPSocketServer connection.
2714      * @param { 'connect' } type - Indicates Event name.
2715      * @param { Callback<TCPSocketConnection> } callback - The callback of on.
2716      * @throws { BusinessError } 401 - Parameter error.
2717      * @syscap SystemCapability.Communication.NetStack
2718      * @since 10
2719      */
2720     on(type: 'connect', callback: Callback<TCPSocketConnection>): void;
2721 
2722     /**
2723      * Cancels listening for connect events of the TCPSocketServer connection.
2724      * @param { 'connect' } type - Indicates Event name.
2725      * @param { Callback<TCPSocketConnection> } callback - The callback of off.
2726      * @throws { BusinessError } 401 - Parameter error.
2727      * @syscap SystemCapability.Communication.NetStack
2728      * @since 10
2729      */
2730     off(type: 'connect', callback?: Callback<TCPSocketConnection>): void;
2731 
2732     /**
2733      * Listens for error events of the TCPSocketServer connection.
2734      * @param { 'error' } type - Indicates Event name.
2735      * @param { ErrorCallback } callback - The callback of on.
2736      * @throws { BusinessError } 401 - Parameter error.
2737      * @syscap SystemCapability.Communication.NetStack
2738      * @since 10
2739      */
2740     on(type: 'error', callback: ErrorCallback): void;
2741 
2742     /**
2743      * Cancels listening for error events of the TCPSocketServer connection.
2744      * @param { 'error' } type - Indicates Event name.
2745      * @param { ErrorCallback } callback - The callback of off.
2746      * @throws { BusinessError } 401 - Parameter error.
2747      * @syscap SystemCapability.Communication.NetStack
2748      * @since 10
2749      */
2750     off(type: 'error', callback?: ErrorCallback): void;
2751   }
2752 
2753   /**
2754    * Defines the connection of the TLSSocket client and server.
2755    * @interface TLSSocketConnection
2756    * @syscap SystemCapability.Communication.NetStack
2757    * @since 10
2758    */
2759   export interface TLSSocketConnection {
2760     /**
2761      * The id of a client connects to the TLSSocketServer.
2762      * @type {number}
2763      * @syscap SystemCapability.Communication.NetStack
2764      * @since 10
2765      */
2766     clientId: number;
2767 
2768     /**
2769      * Sends data over a TLSSocketServer connection to client.
2770      * @param { string } data - Parameters for sending data.
2771      * @param { AsyncCallback<void> } callback - The callback of send.
2772      * @throws { BusinessError } 401 - Parameter error.
2773      * @throws { BusinessError } 2303501 - SSL is null.
2774      * @throws { BusinessError } 2303503 - Error in tls writing.
2775      * @throws { BusinessError } 2303505 - Error occurred in the tls system call.
2776      * @throws { BusinessError } 2303506 - Error clearing tls connection.
2777      * @throws { BusinessError } 2300002 - System internal error.
2778      * @syscap SystemCapability.Communication.NetStack
2779      * @since 10
2780      */
2781     send(data: string, callback: AsyncCallback<void>): void;
2782 
2783     /**
2784      * Sends data over a TLSSocketServer connection to client.
2785      * @param { string } data - Parameters for sending data.
2786      * @returns { Promise<void> } The promise returned by the function.
2787      * @throws { BusinessError } 401 - Parameter error.
2788      * @throws { BusinessError } 2303501 - SSL is null.
2789      * @throws { BusinessError } 2303503 - Error in tls writing.
2790      * @throws { BusinessError } 2303505 - Error occurred in the tls system call.
2791      * @throws { BusinessError } 2303506 - Error clearing tls connection.
2792      * @throws { BusinessError } 2300002 - System internal error.
2793      * @syscap SystemCapability.Communication.NetStack
2794      * @since 10
2795      */
2796     send(data: string): Promise<void>;
2797 
2798     /**
2799      * Closes a TLSSocket client connection.
2800      * @param { AsyncCallback<void> } callback - The callback of close.
2801      * @throws { BusinessError } 401 - Parameter error.
2802      * @throws { BusinessError } 2303501 - SSL is null.
2803      * @throws { BusinessError } 2303505 - Error occurred in the tls system call.
2804      * @throws { BusinessError } 2303506 - Error clearing tls connection.
2805      * @throws { BusinessError } 2300002 - System internal error.
2806      * @syscap SystemCapability.Communication.NetStack
2807      * @since 10
2808      */
2809     close(callback: AsyncCallback<void>): void;
2810 
2811     /**
2812      * Closes a TLSSocket client connection.
2813      * @returns { Promise<void> } The promise returned by the function.
2814      * @throws { BusinessError } 2303501 - SSL is null.
2815      * @throws { BusinessError } 2303505 - Error occurred in the tls system call.
2816      * @throws { BusinessError } 2303506 - Error clearing tls connection.
2817      * @throws { BusinessError } 2300002 - System internal error.
2818      * @syscap SystemCapability.Communication.NetStack
2819      * @since 10
2820      */
2821     close(): Promise<void>;
2822 
2823     /**
2824      * Obtains the peer address of a TLSSocketServer connection.
2825      * @param { AsyncCallback<NetAddress> } callback - The callback of getRemoteAddress.
2826      * @throws { BusinessError } 401 - Parameter error.
2827      * @throws { BusinessError } 2300002 - System internal error.
2828      * @throws { BusinessError } 2303188 - Socket operation on non-socket.
2829      * @syscap SystemCapability.Communication.NetStack
2830      * @since 10
2831      */
2832     getRemoteAddress(callback: AsyncCallback<NetAddress>): void;
2833 
2834     /**
2835      * Obtains the peer address of a TLSSocketServer connection.
2836      * @returns { Promise<NetAddress> } The promise returned by the function.
2837      * @throws { BusinessError } 2300002 - System internal error.
2838      * @throws { BusinessError } 2303188 - Socket operation on non-socket.
2839      * @syscap SystemCapability.Communication.NetStack
2840      * @since 10
2841      */
2842     getRemoteAddress(): Promise<NetAddress>;
2843 
2844     /**
2845      * <p>Returns an object representing the peer certificate. If the peer does not provide a certificate,
2846      * an empty object will be returned. If the socket is destroyed, null is returned.</p>
2847      * It only contains the peer's certificate.
2848      * @param { AsyncCallback<X509CertRawData> } callback - The callback of getRemoteCertificate.
2849      * @throws { BusinessError } 401 - Parameter error.
2850      * @throws { BusinessError } 2303501 - SSL is null.
2851      * @throws { BusinessError } 2300002 - System internal error.
2852      * @syscap SystemCapability.Communication.NetStack
2853      * @since 10
2854      */
2855     getRemoteCertificate(callback: AsyncCallback<X509CertRawData>): void;
2856 
2857     /**
2858      * <p>Returns an object representing the peer certificate. If the peer does not provide a certificate,
2859      * an empty object will be returned. If the socket is destroyed, null is returned.</p>
2860      * It only contains the peer's certificate.
2861      * @returns { Promise<X509CertRawData> } The promise returned by the function.
2862      * @throws { BusinessError } 2303501 - SSL is null.
2863      * @throws { BusinessError } 2300002 - System internal error.
2864      * @syscap SystemCapability.Communication.NetStack
2865      * @since 10
2866      */
2867     getRemoteCertificate(): Promise<X509CertRawData>;
2868 
2869     /**
2870      * Returns a list containing the negotiated cipher suite information.
2871      * For example:{"TLS_RSA_WITH_AES_128_CBC_SHA256", "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256"}
2872      * @param { AsyncCallback<Array<string>> } callback - The callback of getCipherSuite.
2873      * @throws { BusinessError } 401 - Parameter error.
2874      * @throws { BusinessError } 2303501 - SSL is null.
2875      * @throws { BusinessError } 2303502 - Error in tls reading.
2876      * @throws { BusinessError } 2303505 - Error occurred in the tls system call.
2877      * @throws { BusinessError } 2300002 - System internal error.
2878      * @syscap SystemCapability.Communication.NetStack
2879      * @since 10
2880      */
2881     getCipherSuite(callback: AsyncCallback<Array<string>>): void;
2882 
2883     /**
2884      * Returns a list containing the negotiated cipher suite information.
2885      * For example:{"TLS_RSA_WITH_AES_128_CBC_SHA256", "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256"}
2886      * @returns { Promise<Array<string>> } The promise returned by the function.
2887      * @throws { BusinessError } 2303501 - SSL is null.
2888      * @throws { BusinessError } 2303502 - Error in tls reading.
2889      * @throws { BusinessError } 2303505 - Error occurred in the tls system call.
2890      * @throws { BusinessError } 2300002 - System internal error.
2891      * @syscap SystemCapability.Communication.NetStack
2892      * @since 10
2893      */
2894     getCipherSuite(): Promise<Array<string>>;
2895 
2896     /**
2897      * <p>The list of signature algorithms shared between the server and the client,
2898      * in descending order of priority.</p>
2899      * @param { AsyncCallback<Array<string>> } callback - The callback of getSignatureAlgorithms.
2900      * @throws { BusinessError } 401 - Parameter error.
2901      * @throws { BusinessError } 2303501 - SSL is null.
2902      * @throws { BusinessError } 2300002 - System internal error.
2903      * @syscap SystemCapability.Communication.NetStack
2904      * @since 10
2905      */
2906     getSignatureAlgorithms(callback: AsyncCallback<Array<string>>): void;
2907 
2908     /**
2909      * <p>The list of signature algorithms shared between the server and the client,
2910      * in descending order of priority.</p>
2911      * @returns { Promise<Array<string>> } The promise returned by the function.
2912      * @throws { BusinessError } 2303501 - SSL is null.
2913      * @throws { BusinessError } 2300002 - System internal error.
2914      * @syscap SystemCapability.Communication.NetStack
2915      * @since 10
2916      */
2917     getSignatureAlgorithms(): Promise<Array<string>>;
2918 
2919     /**
2920      * Listens for message receiving events of the TLSSocketConnection.
2921      * @param { 'message' } type - Indicates Event name.
2922      * @param { Callback<{ message: ArrayBuffer, remoteInfo: SocketRemoteInfo }> } callback - The callback of on.
2923      * @throws { BusinessError } 401 - Parameter error.
2924      * @syscap SystemCapability.Communication.NetStack
2925      * @since 10
2926      */
2927     on(type: 'message', callback: Callback<{ message: ArrayBuffer, remoteInfo: SocketRemoteInfo }>): void;
2928 
2929     /**
2930      * Cancels listening for message receiving events of the TLSSocketConnection.
2931      * @param { 'message' } type - Indicates Event name.
2932      * @param { Callback<{ message: ArrayBuffer, remoteInfo: SocketRemoteInfo }> } callback - The callback of off.
2933      * @throws { BusinessError } 401 - Parameter error.
2934      * @syscap SystemCapability.Communication.NetStack
2935      * @since 10
2936      */
2937     off(type: 'message', callback?: Callback<{ message: ArrayBuffer, remoteInfo: SocketRemoteInfo }>): void;
2938 
2939     /**
2940      * Listens for close events of the TLSSocketConnection.
2941      * @param { 'close' } type - Indicates Event name.
2942      * @param { Callback<void> } callback - The callback of on.
2943      * @throws { BusinessError } 401 - Parameter error.
2944      * @syscap SystemCapability.Communication.NetStack
2945      * @since 10
2946      */
2947     on(type: 'close', callback: Callback<void>): void;
2948 
2949     /**
2950      * Cancels listening for close events of the TLSSocketConnection.
2951      * @param { 'close' } type - Indicates Event name.
2952      * @param { Callback<void> } callback - The callback of off.
2953      * @throws { BusinessError } 401 - Parameter error.
2954      * @syscap SystemCapability.Communication.NetStack
2955      * @since 10
2956      */
2957     off(type: 'close', callback?: Callback<void>): void;
2958 
2959     /**
2960      * Listens for error events of the TLSSocketConnection.
2961      * @param { 'error' } type - Indicates Event name.
2962      * @param { ErrorCallback } callback - The callback of on.
2963      * @throws { BusinessError } 401 - Parameter error.
2964      * @syscap SystemCapability.Communication.NetStack
2965      * @since 10
2966      */
2967     on(type: 'error', callback: ErrorCallback): void;
2968 
2969     /**
2970      * Cancels listening for error events of the TLSSocketConnection.
2971      * @param { 'error' } type - Indicates Event name.
2972      * @param { ErrorCallback } callback - The callback of off.
2973      * @throws { BusinessError } 401 - Parameter error.
2974      * @syscap SystemCapability.Communication.NetStack
2975      * @since 10
2976      */
2977     off(type: 'error', callback?: ErrorCallback): void;
2978   }
2979 
2980   /**
2981    * Defines a TLSSocketServer server connection.
2982    * @interface TLSSocketServer
2983    * @syscap SystemCapability.Communication.NetStack
2984    * @since 10
2985    */
2986   export interface TLSSocketServer {
2987     /**
2988      * Binds the IP address and port number, the port number can be specified or randomly allocated by the system.
2989      * <p>Listens for a TCPSocket connection to be made to this socket and accepts it. This interface uses multiple threads
2990      * for accept processing and uses poll multiplex to process client connections.</p>
2991      * @permission ohos.permission.INTERNET
2992      * @param { TLSConnectOptions } options - TLS connection options {@link TLSConnectOptions}.
2993      * @param { AsyncCallback<void> } callback - The callback of listen.
2994      * @throws { BusinessError } 401 - Parameter error.
2995      * @throws { BusinessError } 201 - Permission denied.
2996      * @throws { BusinessError } 2300002 - System internal error.
2997      * @throws { BusinessError } 2303109 - Bad file number.
2998      * @throws { BusinessError } 2303111 - Resource temporarily unavailable try again.
2999      * @throws { BusinessError } 2303198 - Address already in use.
3000      * @throws { BusinessError } 2303199 - Cannot assign requested address.
3001      * @throws { BusinessError } 2303501 - SSL is null.
3002      * @throws { BusinessError } 2303502 - Error in tls reading.
3003      * @throws { BusinessError } 2303503 - Error in tls writing
3004      * @throws { BusinessError } 2303505 - Error occurred in the tls system call.
3005      * @throws { BusinessError } 2303506 - Error clearing tls connection.
3006      * @syscap SystemCapability.Communication.NetStack
3007      * @since 10
3008      */
3009     listen(options: TLSConnectOptions, callback: AsyncCallback<void>): void;
3010 
3011     /**
3012      * Binds the IP address and port number, the port number can be specified or randomly allocated by the system.
3013      * <p>Listens for a TCPSocket connection to be made to this socket and accepts it. This interface uses multiple threads
3014      * for accept processing and uses poll multiplex to process client connections.</p>
3015      * @permission ohos.permission.INTERNET
3016      * @param { TLSConnectOptions } options - TLS connection options {@link TLSConnectOptions}.
3017      * @returns { Promise<void> } The promise returned by the function.
3018      * @throws { BusinessError } 401 - Parameter error.
3019      * @throws { BusinessError } 201 - Permission denied.
3020      * @throws { BusinessError } 2300002 - System internal error.
3021      * @throws { BusinessError } 2303109 - Bad file number.
3022      * @throws { BusinessError } 2303111 - Resource temporarily unavailable try again.
3023      * @throws { BusinessError } 2303198 - Address already in use.
3024      * @throws { BusinessError } 2303199 - Cannot assign requested address.
3025      * @throws { BusinessError } 2303501 - SSL is null.
3026      * @throws { BusinessError } 2303502 - Error in tls reading.
3027      * @throws { BusinessError } 2303503 - Error in tls writing
3028      * @throws { BusinessError } 2303505 - Error occurred in the tls system call.
3029      * @throws { BusinessError } 2303506 - Error clearing tls connection.
3030      * @syscap SystemCapability.Communication.NetStack
3031      * @since 10
3032      */
3033     listen(options: TLSConnectOptions): Promise<void>;
3034 
3035     /**
3036      * Obtains the status of the TLSSocketServer connection.
3037      * @param { AsyncCallback<SocketStateBase> } callback - The callback of getState.
3038      * @throws { BusinessError } 401 - Parameter error.
3039      * @throws { BusinessError } 2303188 - Socket operation on non-socket.
3040      * @throws { BusinessError } 2300002 - System internal error.
3041      * @syscap SystemCapability.Communication.NetStack
3042      * @since 10
3043      */
3044     getState(callback: AsyncCallback<SocketStateBase>): void;
3045 
3046     /**
3047      * Obtains the status of the TLSSocketServer connection.
3048      * @returns { Promise<SocketStateBase> } The promise returned by the function.
3049      * @throws { BusinessError } 2303188 - Socket operation on non-socket.
3050      * @throws { BusinessError } 2300002 - System internal error.
3051      * @syscap SystemCapability.Communication.NetStack
3052      * @since 10
3053      */
3054     getState(): Promise<SocketStateBase>;
3055 
3056     /**
3057      * Sets other attributes of the TLSSocketServer connection.
3058      * @param { TCPExtraOptions } options - Parameters of the attributes {@link TCPExtraOptions}.
3059      * @param { AsyncCallback<void> } callback - The callback of setExtraOptions.
3060      * @throws { BusinessError } 401 - Parameter error.
3061      * @throws { BusinessError } 2303188 - Socket operation on non-socket.
3062      * @throws { BusinessError } 2300002 - System internal error.
3063      * @syscap SystemCapability.Communication.NetStack
3064      * @since 10
3065      */
3066     setExtraOptions(options: TCPExtraOptions, callback: AsyncCallback<void>): void;
3067 
3068     /**
3069      * Sets other attributes of the TLSSocketServer connection.
3070      * @param { TCPExtraOptions } options - Parameters of the attributes {@link TCPExtraOptions}.
3071      * @returns { Promise<void> } The promise returned by the function.
3072      * @throws { BusinessError } 401 - Parameter error.
3073      * @throws { BusinessError } 2303188 - Socket operation on non-socket.
3074      * @throws { BusinessError } 2300002 - System internal error.
3075      * @syscap SystemCapability.Communication.NetStack
3076      * @since 10
3077      */
3078     setExtraOptions(options: TCPExtraOptions): Promise<void>;
3079 
3080     /**
3081      * Returns an object representing a local certificate.
3082      * @param { AsyncCallback<X509CertRawData> } callback - The callback of getCertificate.
3083      * @throws { BusinessError } 401 - Parameter error.
3084      * @throws { BusinessError } 2303501 - SSL is null.
3085      * @throws { BusinessError } 2303504 - Error looking up x509
3086      * @throws { BusinessError } 2300002 - System internal error.
3087      * @syscap SystemCapability.Communication.NetStack
3088      * @since 10
3089      */
3090     getCertificate(callback: AsyncCallback<X509CertRawData>): void;
3091 
3092     /**
3093      * Returns an object representing a local certificate.
3094      * @returns { Promise<X509CertRawData> } The promise returned by the function.
3095      * @throws { BusinessError } 2303501 - SSL is null.
3096      * @throws { BusinessError } 2303504 - Error looking up x509
3097      * @throws { BusinessError } 2300002 - System internal error.
3098      * @syscap SystemCapability.Communication.NetStack
3099      * @since 10
3100      */
3101     getCertificate(): Promise<X509CertRawData>;
3102 
3103     /**
3104      * Returns a string containing the negotiated SSL/TLS protocol version of the current connection.
3105      * For connected sockets that have not completed the handshake process, the value 'unknown' will be returned.
3106      * Server sockets or disconnected client sockets will return a value of null.
3107      * @param { AsyncCallback<string> } callback - The callback of getProtocol.
3108      * @throws { BusinessError } 401 - Parameter error.
3109      * @throws { BusinessError } 2303501 - SSL is null.
3110      * @throws { BusinessError } 2303505 - Error occurred in the tls system call.
3111      * @throws { BusinessError } 2300002 - System internal error.
3112      * @syscap SystemCapability.Communication.NetStack
3113      * @since 10
3114      */
3115     getProtocol(callback: AsyncCallback<string>): void;
3116 
3117     /**
3118      * Returns a string containing the negotiated SSL/TLS protocol version of the current connection.
3119      * For connected sockets that have not completed the handshake process, the value 'unknown' will be returned.
3120      * Server sockets or disconnected client sockets will return a value of null.
3121      * @returns { Promise<string> } The promise returned by the function.
3122      * @throws { BusinessError } 2303501 - SSL is null.
3123      * @throws { BusinessError } 2303505 - Error occurred in the tls system call.
3124      * @throws { BusinessError } 2300002 - System internal error.
3125      * @syscap SystemCapability.Communication.NetStack
3126      * @since 10
3127      */
3128     getProtocol(): Promise<string>;
3129 
3130     /**
3131      * Listens for connect events of the TLSSocketServer connection.
3132      * @param { 'connect' } type - Indicates Event name.
3133      * @param { Callback<TLSSocketConnection> } callback - The callback of on.
3134      * @throws { BusinessError } 401 - Parameter error.
3135      * @syscap SystemCapability.Communication.NetStack
3136      * @since 10
3137      */
3138     on(type: 'connect', callback: Callback<TLSSocketConnection>): void;
3139 
3140     /**
3141      * Cancels listening for connect events of the TLSSocketServer connection.
3142      * @param { 'connect' } type - Indicates Event name.
3143      * @param { Callback<TLSSocketConnection> } callback - The callback of off.
3144      * @throws { BusinessError } 401 - Parameter error.
3145      * @syscap SystemCapability.Communication.NetStack
3146      * @since 10
3147      */
3148     off(type: 'connect', callback?: Callback<TLSSocketConnection>): void;
3149 
3150     /**
3151      * Listens for error events of the TLSSocketServer connection.
3152      * @param { 'error' } type - Indicates Event name.
3153      * @param { ErrorCallback } callback - The callback of on.
3154      * @throws { BusinessError } 401 - Parameter error.
3155      * @syscap SystemCapability.Communication.NetStack
3156      * @since 10
3157      */
3158     on(type: 'error', callback: ErrorCallback): void;
3159 
3160     /**
3161      * Cancels listening for error events of the TLSSocketServer connection.
3162      * @param { 'error' } type - Indicates Event name.
3163      * @param { ErrorCallback } callback - The callback of off.
3164      * @throws { BusinessError } 401 - Parameter error.
3165      * @syscap SystemCapability.Communication.NetStack
3166      * @since 10
3167      */
3168     off(type: 'error', callback?: ErrorCallback): void;
3169   }
3170 }
3171 
3172 export default socket;
3173