Socket連接

2024-01-23 16:42 更新

本模塊提供利用Socket進(jìn)行數(shù)據(jù)傳輸?shù)哪芰ΓС諸CPSocket、UDPSocket、WebSocket和TLSSocket。

說明

本模塊首批接口從API version 7開始支持。后續(xù)版本的新增接口,采用上角標(biāo)單獨(dú)標(biāo)記接口的起始版本。

導(dǎo)入模塊

  1. import socket from '@ohos.net.socket';

socket.constructUDPSocketInstance

constructUDPSocketInstance(): UDPSocket

創(chuàng)建一個(gè)UDPSocket對(duì)象。

系統(tǒng)能力:SystemCapability.Communication.NetStack

返回值:

類型

說明

UDPSocket

返回一個(gè)UDPSocket對(duì)象。

示例:

  1. let udp = socket.constructUDPSocketInstance();

UDPSocket

UDPSocket連接。在調(diào)用UDPSocket的方法前,需要先通過socket.constructUDPSocketInstance創(chuàng)建UDPSocket對(duì)象。

bind

bind(address: NetAddress, callback: AsyncCallback<void>): void

綁定IP地址和端口,端口可以指定或由系統(tǒng)隨機(jī)分配。使用callback方式作為異步方法。

說明

客戶端使用該方法創(chuàng)建socket。

需要權(quán)限:ohos.permission.INTERNET

系統(tǒng)能力:SystemCapability.Communication.NetStack

參數(shù):

參數(shù)名

類型

必填

說明

address

NetAddress

目標(biāo)地址信息,參考NetAddress。

callback

AsyncCallback<void>

回調(diào)函數(shù)。

錯(cuò)誤碼:

錯(cuò)誤碼ID

錯(cuò)誤信息

401

Parameter error.

201

Permission denied.

示例:

  1. let udp = socket.constructUDPSocketInstance();
  2. udp.bind({address: '192.168.xx.xxx', port: xxxx, family: 1}, err => {
  3. if (err) {
  4. console.log('bind fail');
  5. return;
  6. }
  7. console.log('bind success');
  8. })

bind

bind(address: NetAddress): Promise<void>

綁定IP地址和端口,端口可以指定或由系統(tǒng)隨機(jī)分配。使用Promise方式作為異步方法。

說明

客戶端使用該方法創(chuàng)建socket。

需要權(quán)限:ohos.permission.INTERNET

系統(tǒng)能力:SystemCapability.Communication.NetStack

參數(shù):

參數(shù)名

類型

必填

說明

address

NetAddress

目標(biāo)地址信息,參考NetAddress

錯(cuò)誤碼:

錯(cuò)誤碼ID

錯(cuò)誤信息

401

Parameter error.

201

Permission denied.

返回值:

類型

說明

Promise<void>

以Promise形式異步返回UDPSocket綁定的結(jié)果。

示例:

  1. let udp = socket.constructUDPSocketInstance();
  2. let promise = udp.bind({address: '192.168.xx.xxx', port: 8080, family: 1});
  3. promise .then(() => {
  4. console.log('bind success');
  5. }).catch(err => {
  6. console.log('bind fail');
  7. });

send

send(options: UDPSendOptions, callback: AsyncCallback<void>): void

通過UDPSocket連接發(fā)送數(shù)據(jù)。使用callback方式作為異步方法。

發(fā)送數(shù)據(jù)前,需要先調(diào)用UDPSocket.bind()綁定IP地址和端口。

需要權(quán)限:ohos.permission.INTERNET

系統(tǒng)能力:SystemCapability.Communication.NetStack

參數(shù):

參數(shù)名

類型

必填

說明

options

UDPSendOptions

UDPSocket發(fā)送參數(shù),參考UDPSendOptions。

callback

AsyncCallback<void>

回調(diào)函數(shù)。

錯(cuò)誤碼:

錯(cuò)誤碼ID

錯(cuò)誤信息

401

Parameter error.

201

Permission denied.

示例:

  1. let udp = socket.constructUDPSocketInstance();
  2. udp.send({
  3. data:'Hello, server!',
  4. address: {
  5. address:'192.168.xx.xxx',
  6. port:xxxx,
  7. family:1
  8. }
  9. }, err=> {
  10. if (err) {
  11. console.log('send fail');
  12. return;
  13. }
  14. console.log('send success');
  15. })

send

send(options: UDPSendOptions): Promise<void>

通過UDPSocket連接發(fā)送數(shù)據(jù)。使用Promise方式作為異步方法。

發(fā)送數(shù)據(jù)前,需要先調(diào)用UDPSocket.bind()綁定IP地址和端口。

需要權(quán)限:ohos.permission.INTERNET

系統(tǒng)能力:SystemCapability.Communication.NetStack

參數(shù):

參數(shù)名

類型

必填

說明

options

UDPSendOptions

UDPSocket發(fā)送參數(shù),參考UDPSendOptions。

錯(cuò)誤碼:

錯(cuò)誤碼ID

錯(cuò)誤信息

401

Parameter error.

201

Permission denied.

返回值:

類型

說明

Promise<void>

以Promise形式返回UDPSocket連接發(fā)送數(shù)據(jù)的結(jié)果。

示例:

  1. let udp = socket.constructUDPSocketInstance();
  2. let promise = udp.send({
  3. data:'Hello, server!',
  4. address: {
  5. address:'192.168.xx.xxx',
  6. port:xxxx,
  7. family:1
  8. }
  9. });
  10. promise.then(() => {
  11. console.log('send success');
  12. }).catch(err => {
  13. console.log('send fail');
  14. });

close

close(callback: AsyncCallback<void>): void

關(guān)閉UDPSocket連接。使用callback方式作為異步方法。

需要權(quán)限:ohos.permission.INTERNET

系統(tǒng)能力:SystemCapability.Communication.NetStack

參數(shù):

參數(shù)名

類型

必填

說明

callback

AsyncCallback<void>

回調(diào)函數(shù)。

示例:

  1. let udp = socket.constructUDPSocketInstance();
  2. udp.close(err => {
  3. if (err) {
  4. console.log('close fail');
  5. return;
  6. }
  7. console.log('close success');
  8. })

close

close(): Promise<void>

關(guān)閉UDPSocket連接。使用Promise方式作為異步方法。

需要權(quán)限:ohos.permission.INTERNET

系統(tǒng)能力:SystemCapability.Communication.NetStack

返回值:

類型

說明

Promise<void>

以Promise形式返回關(guān)閉UDPSocket連接的結(jié)果。

示例:

  1. let udp = socket.constructUDPSocketInstance();
  2. let promise = udp.close();
  3. promise.then(() => {
  4. console.log('close success');
  5. }).catch(err => {
  6. console.log('close fail');
  7. });

getState

getState(callback: AsyncCallback<SocketStateBase>): void

獲取UDPSocket狀態(tài)。使用callback方式作為異步方法。

說明

bind方法調(diào)用成功后,才可調(diào)用此方法。

需要權(quán)限:ohos.permission.INTERNET

系統(tǒng)能力:SystemCapability.Communication.NetStack

參數(shù):

參數(shù)名

類型

必填

說明

callback

AsyncCallback<SocketStateBase>

回調(diào)函數(shù)。

錯(cuò)誤碼:

錯(cuò)誤碼ID

錯(cuò)誤信息

201

Permission denied.

示例:

  1. let udp = socket.constructUDPSocketInstance();
  2. udp.bind({address: '192.168.xx.xxx', port: xxxx, family: 1}, err => {
  3. if (err) {
  4. console.log('bind fail');
  5. return;
  6. }
  7. console.log('bind success');
  8. udp.getState((err, data) => {
  9. if (err) {
  10. console.log('getState fail');
  11. return;
  12. }
  13. console.log('getState success:' + JSON.stringify(data));
  14. })
  15. })

getState

getState(): Promise<SocketStateBase>

獲取UDPSocket狀態(tài)。使用Promise方式作為異步方法。

說明

bind方法調(diào)用成功后,才可調(diào)用此方法。

需要權(quán)限:ohos.permission.INTERNET

系統(tǒng)能力:SystemCapability.Communication.NetStack

返回值:

類型

說明

Promise<SocketStateBase>

以Promise形式返回獲取UDPSocket狀態(tài)的結(jié)果。

示例:

  1. let udp = socket.constructUDPSocketInstance();
  2. udp.bind({address: '192.168.xx.xxx', port: xxxx, family: 1}, err => {
  3. if (err) {
  4. console.log('bind fail');
  5. return;
  6. }
  7. console.log('bind success');
  8. let promise = udp.getState();
  9. promise.then(data => {
  10. console.log('getState success:' + JSON.stringify(data));
  11. }).catch(err => {
  12. console.log('getState fail');
  13. });
  14. })

setExtraOptions

setExtraOptions(options: UDPExtraOptions, callback: AsyncCallback<void>): void

設(shè)置UDPSocket連接的其他屬性。使用callback方式作為異步方法。

說明

bind方法調(diào)用成功后,才可調(diào)用此方法。

需要權(quán)限:ohos.permission.INTERNET

系統(tǒng)能力:SystemCapability.Communication.NetStack

參數(shù):

參數(shù)名

類型

必填

說明

options

UDPExtraOptions

UDPSocket連接的其他屬性,參考UDPExtraOptions。

callback

AsyncCallback<void>

回調(diào)函數(shù)。

錯(cuò)誤碼:

錯(cuò)誤碼ID

錯(cuò)誤信息

401

Parameter error.

201

Permission denied.

示例:

  1. let udp = socket.constructUDPSocketInstance();
  2. udp.bind({address:'192.168.xx.xxx', port:xxxx, family:1}, err=> {
  3. if (err) {
  4. console.log('bind fail');
  5. return;
  6. }
  7. console.log('bind success');
  8. udp.setExtraOptions({
  9. receiveBufferSize:1000,
  10. sendBufferSize:1000,
  11. reuseAddress:false,
  12. socketTimeout:6000,
  13. broadcast:true
  14. }, err=> {
  15. if (err) {
  16. console.log('setExtraOptions fail');
  17. return;
  18. }
  19. console.log('setExtraOptions success');
  20. })
  21. })

setExtraOptions

setExtraOptions(options: UDPExtraOptions): Promise<void>

設(shè)置UDPSocket連接的其他屬性。使用Promise方式作為異步方法。

說明

bind方法調(diào)用成功后,才可調(diào)用此方法。

需要權(quán)限:ohos.permission.INTERNET

系統(tǒng)能力:SystemCapability.Communication.NetStack

參數(shù):

參數(shù)名

類型

必填

說明

options

UDPExtraOptions

UDPSocket連接的其他屬性,參考UDPExtraOptions。

返回值:

類型

說明

Promise<void>

以Promise形式返回設(shè)置UDPSocket連接的其他屬性的結(jié)果。

錯(cuò)誤碼:

錯(cuò)誤碼ID

錯(cuò)誤信息

401

Parameter error.

201

Permission denied.

示例:

  1. let udp = socket.constructUDPSocketInstance();
  2. let promise = udp.bind({address:'192.168.xx.xxx', port:xxxx, family:1});
  3. promise.then(() => {
  4. console.log('bind success');
  5. let promise1 = udp.setExtraOptions({
  6. receiveBufferSize:1000,
  7. sendBufferSize:1000,
  8. reuseAddress:false,
  9. socketTimeout:6000,
  10. broadcast:true
  11. });
  12. promise1.then(() => {
  13. console.log('setExtraOptions success');
  14. }).catch(err => {
  15. console.log('setExtraOptions fail');
  16. });
  17. }).catch(err => {
  18. console.log('bind fail');
  19. });

on('message')

on(type: 'message', callback: Callback<{message: ArrayBuffer, remoteInfo: SocketRemoteInfo}>): void

訂閱UDPSocket連接的接收消息事件。使用callback方式作為異步方法。

系統(tǒng)能力:SystemCapability.Communication.NetStack

參數(shù):

參數(shù)名

類型

必填

說明

type

string

訂閱的事件類型。'message':接收消息事件。

callback

Callback<{message: ArrayBuffer, remoteInfo: SocketRemoteInfo}>

回調(diào)函數(shù)。

示例:

  1. let udp = socket.constructUDPSocketInstance();
  2. udp.on('message', value => {
  3. console.log("on message, message:" + value.message + ", remoteInfo:" + value.remoteInfo);
  4. });

off('message')

off(type: 'message', callback?: Callback<{message: ArrayBuffer, remoteInfo: SocketRemoteInfo}>): void

取消訂閱UDPSocket連接的接收消息事件。使用callback方式作為異步方法。

說明

可以指定傳入on中的callback取消一個(gè)訂閱,也可以不指定callback清空所有訂閱。

系統(tǒng)能力:SystemCapability.Communication.NetStack

參數(shù):

參數(shù)名

類型

必填

說明

type

string

訂閱的事件類型。'message':接收消息事件。

callback

Callback<{message: ArrayBuffer, remoteInfo: SocketRemoteInfo}>

回調(diào)函數(shù)。

示例:

  1. let udp = socket.constructUDPSocketInstance();
  2. let callback = value =>{
  3. console.log("on message, message:" + value.message + ", remoteInfo:" + value.remoteInfo);
  4. }
  5. udp.on('message', callback);
  6. // 可以指定傳入on中的callback取消一個(gè)訂閱,也可以不指定callback清空所有訂閱。
  7. udp.off('message', callback);
  8. udp.off('message');

on('listening' | 'close')

on(type: 'listening' | 'close', callback: Callback<void>): void

訂閱UDPSocket連接的數(shù)據(jù)包消息事件或關(guān)閉事件。使用callback方式作為異步方法。

系統(tǒng)能力:SystemCapability.Communication.NetStack

參數(shù):

參數(shù)名

類型

必填

說明

type

string

訂閱的事件類型。

- 'listening':數(shù)據(jù)包消息事件。

- 'close':關(guān)閉事件。

callback

Callback<void>

回調(diào)函數(shù)。

示例:

  1. let udp = socket.constructUDPSocketInstance();
  2. udp.on('listening', () => {
  3. console.log("on listening success");
  4. });
  5. udp.on('close', () => {
  6. console.log("on close success" );
  7. });

off('listening' | 'close')

off(type: 'listening' | 'close', callback?: Callback<void>): void

取消訂閱UDPSocket連接的數(shù)據(jù)包消息事件或關(guān)閉事件。使用callback方式作為異步方法。

說明

可以指定傳入on中的callback取消一個(gè)訂閱,也可以不指定callback清空所有訂閱。

系統(tǒng)能力:SystemCapability.Communication.NetStack

參數(shù):

參數(shù)名

類型

必填

說明

type

string

訂閱事件類型。

- 'listening':數(shù)據(jù)包消息事件。

- 'close':關(guān)閉事件。

callback

Callback<void>

回調(diào)函數(shù)。

示例:

  1. let udp = socket.constructUDPSocketInstance();
  2. let callback1 = () =>{
  3. console.log("on listening, success");
  4. }
  5. udp.on('listening', callback1);
  6. // 可以指定傳入on中的callback取消一個(gè)訂閱,也可以不指定callback清空所有訂閱。
  7. udp.off('listening', callback1);
  8. udp.off('listening');
  9. let callback2 = () =>{
  10. console.log("on close, success");
  11. }
  12. udp.on('close', callback2);
  13. // 可以指定傳入on中的callback取消一個(gè)訂閱,也可以不指定callback清空所有訂閱。
  14. udp.off('close', callback2);
  15. udp.off('close');

on('error')

on(type: 'error', callback: ErrorCallback): void

訂閱UDPSocket連接的error事件。使用callback方式作為異步方法。

系統(tǒng)能力:SystemCapability.Communication.NetStack

參數(shù):

參數(shù)名

類型

必填

說明

type

string

訂閱的事件類型。'error':error事件。

callback

ErrorCallback

回調(diào)函數(shù)。

示例:

  1. let udp = socket.constructUDPSocketInstance();
  2. udp.on('error', err => {
  3. console.log("on error, err:" + JSON.stringify(err))
  4. });

off('error')

off(type: 'error', callback?: ErrorCallback): void

取消訂閱UDPSocket連接的error事件。使用callback方式作為異步方法。

說明

可以指定傳入on中的callback取消一個(gè)訂閱,也可以不指定callback清空所有訂閱。

系統(tǒng)能力:SystemCapability.Communication.NetStack

參數(shù):

參數(shù)名

類型

必填

說明

type

string

訂閱的事件類型。'error':error事件。

callback

ErrorCallback

回調(diào)函數(shù)。

示例:

  1. let udp = socket.constructUDPSocketInstance();
  2. let callback = err =>{
  3. console.log("on error, err:" + JSON.stringify(err));
  4. }
  5. udp.on('error', callback);
  6. // 可以指定傳入on中的callback取消一個(gè)訂閱,也可以不指定callback清空所有訂閱。
  7. udp.off('error', callback);
  8. udp.off('error');

NetAddress

目標(biāo)地址信息。

系統(tǒng)能力:以下各項(xiàng)對(duì)應(yīng)的系統(tǒng)能力均為SystemCapability.Communication.NetStack。

名稱

類型

必填

說明

address

string

本地綁定的ip地址。

port

number

端口號(hào) ,范圍0~65535。如果不指定系統(tǒng)隨機(jī)分配端口。

family

number

網(wǎng)絡(luò)協(xié)議類型,可選類型:

- 1:IPv4

- 2:IPv6

默認(rèn)為1。

UDPSendOptions

UDPSocket發(fā)送參數(shù)。

系統(tǒng)能力:以下各項(xiàng)對(duì)應(yīng)的系統(tǒng)能力均為SystemCapability.Communication.NetStack。

名稱

類型

必填

說明

data

string | ArrayBuffer7+

發(fā)送的數(shù)據(jù)。

address

NetAddress

目標(biāo)地址信息。

UDPExtraOptions

UDPSocket連接的其他屬性。

系統(tǒng)能力:以下各項(xiàng)對(duì)應(yīng)的系統(tǒng)能力均為SystemCapability.Communication.NetStack。

名稱

類型

必填

說明

broadcast

boolean

是否可以發(fā)送廣播。默認(rèn)為false。

receiveBufferSize

number

接收緩沖區(qū)大小(單位:Byte)。

sendBufferSize

number

發(fā)送緩沖區(qū)大?。▎挝唬築yte)。

reuseAddress

boolean

是否重用地址。默認(rèn)為false。

socketTimeout

number

套接字超時(shí)時(shí)間,單位毫秒(ms)。

SocketStateBase

Socket的狀態(tài)信息。

系統(tǒng)能力:以下各項(xiàng)對(duì)應(yīng)的系統(tǒng)能力均為SystemCapability.Communication.NetStack。

名稱

類型

必填

說明

isBound

boolean

是否綁定。

isClose

boolean

是否關(guān)閉。

isConnected

boolean

是否連接。

SocketRemoteInfo

Socket的連接信息。

系統(tǒng)能力:以下各項(xiàng)對(duì)應(yīng)的系統(tǒng)能力均為SystemCapability.Communication.NetStack。

名稱

類型

必填

說明

address

string

本地綁定的ip地址。

family

string

網(wǎng)絡(luò)協(xié)議類型,可選類型:

- IPv4

- IPv6

默認(rèn)為IPv4。

port

number

端口號(hào),范圍0~65535。

size

number

服務(wù)器響應(yīng)信息的字節(jié)長(zhǎng)度。

UDP 錯(cuò)誤碼說明

UDP 其余錯(cuò)誤碼映射形式為:2301000 + Linux內(nèi)核錯(cuò)誤碼。

錯(cuò)誤碼的詳細(xì)介紹參見Socket錯(cuò)誤碼

socket.constructTCPSocketInstance

constructTCPSocketInstance(): TCPSocket

創(chuàng)建一個(gè)TCPSocket對(duì)象。

系統(tǒng)能力:SystemCapability.Communication.NetStack

返回值:

類型

說明

TCPSocket

返回一個(gè)TCPSocket對(duì)象。

示例:

  1. let tcp = socket.constructTCPSocketInstance();

TCPSocket

TCPSocket連接。在調(diào)用TCPSocket的方法前,需要先通過socket.constructTCPSocketInstance創(chuàng)建TCPSocket對(duì)象。

bind

bind(address: NetAddress, callback: AsyncCallback<void>): void

綁定IP地址和端口,端口可以指定或由系統(tǒng)隨機(jī)分配。使用callback方法作為異步方法。

說明

客戶端使用該方法創(chuàng)建socket。

需要權(quán)限:ohos.permission.INTERNET

系統(tǒng)能力:SystemCapability.Communication.NetStack

參數(shù):

參數(shù)名

類型

必填

說明

address

NetAddress

目標(biāo)地址信息,參考NetAddress。

callback

AsyncCallback<void>

回調(diào)函數(shù)。

錯(cuò)誤碼:

錯(cuò)誤碼ID

錯(cuò)誤信息

401

Parameter error.

201

Permission denied.

示例:

  1. let tcp = socket.constructTCPSocketInstance();
  2. tcp.bind({ address: '192.168.xx.xxx', port: xxxx, family: 1 }, err => {
  3. if (err) {
  4. console.log('bind fail');
  5. return;
  6. }
  7. console.log('bind success');
  8. })

bind

bind(address: NetAddress): Promise<void>

綁定IP地址和端口,端口可以指定或由系統(tǒng)隨機(jī)分配。使用Promise方法作為異步方法。

說明

客戶端使用該方法創(chuàng)建socket。

需要權(quán)限:ohos.permission.INTERNET

系統(tǒng)能力:SystemCapability.Communication.NetStack

參數(shù):

參數(shù)名

類型

必填

說明

address

NetAddress

目標(biāo)地址信息,參考NetAddress。

返回值:

類型

說明

Promise<void>

以Promise形式返回TCPSocket綁定本機(jī)的IP地址和端口的結(jié)果。

錯(cuò)誤碼:

錯(cuò)誤碼ID

錯(cuò)誤信息

401

Parameter error.

201

Permission denied.

示例:

  1. let tcp = socket.constructTCPSocketInstance();
  2. let promise = tcp.bind({ address: '192.168.xx.xxx', port: xxxx, family: 1 });
  3. promise.then(() => {
  4. console.log('bind success');
  5. }).catch(err => {
  6. console.log('bind fail');
  7. });

connect

connect(options: TCPConnectOptions, callback: AsyncCallback<void>): void

連接到指定的IP地址和端口。使用callback方法作為異步方法。

說明

bind方法調(diào)用成功后,才可調(diào)用此方法。

需要權(quán)限:ohos.permission.INTERNET

系統(tǒng)能力:SystemCapability.Communication.NetStack

參數(shù):

參數(shù)名

類型

必填

說明

options

TCPConnectOptions

TCPSocket連接的參數(shù),參考TCPConnectOptions。

callback

AsyncCallback<void>

回調(diào)函數(shù)。

錯(cuò)誤碼:

錯(cuò)誤碼ID

錯(cuò)誤信息

401

Parameter error.

201

Permission denied.

示例:

  1. let tcp = socket.constructTCPSocketInstance();
  2. tcp.connect({ address: { address: '192.168.xx.xxx', port: xxxx, family: 1 } , timeout: 6000}, err => {
  3. if (err) {
  4. console.log('connect fail');
  5. return;
  6. }
  7. console.log('connect success');
  8. })

connect

connect(options: TCPConnectOptions): Promise<void>

連接到指定的IP地址和端口。使用promise方法作為異步方法。

需要權(quán)限:ohos.permission.INTERNET

系統(tǒng)能力:SystemCapability.Communication.NetStack

參數(shù):

參數(shù)名

類型

必填

說明

options

TCPConnectOptions

TCPSocket連接的參數(shù),參考TCPConnectOptions。

返回值:

類型

說明

Promise<void>

以Promise形式返回TCPSocket連接到指定的IP地址和端口的結(jié)果。

錯(cuò)誤碼:

錯(cuò)誤碼ID

錯(cuò)誤信息

401

Parameter error.

201

Permission denied.

示例:

  1. let tcp = socket.constructTCPSocketInstance();
  2. let promise = tcp.connect({ address: {address: '192.168.xx.xxx', port: xxxx, family: 1} , timeout: 6000});
  3. promise.then(() => {
  4. console.log('connect success')
  5. }).catch(err => {
  6. console.log('connect fail');
  7. });

send

send(options: TCPSendOptions, callback: AsyncCallback<void>): void

通過TCPSocket連接發(fā)送數(shù)據(jù)。使用callback方式作為異步方法。

說明

connect方法調(diào)用成功后,才可調(diào)用此方法。

需要權(quán)限:ohos.permission.INTERNET

系統(tǒng)能力:SystemCapability.Communication.NetStack

參數(shù):

參數(shù)名

類型

必填

說明

options

TCPSendOptions

TCPSocket發(fā)送請(qǐng)求的參數(shù),參考TCPSendOptions。

callback

AsyncCallback<void>

回調(diào)函數(shù)。

錯(cuò)誤碼:

錯(cuò)誤碼ID

錯(cuò)誤信息

401

Parameter error.

201

Permission denied.

示例:

  1. let tcp = socket.constructTCPSocketInstance();
  2. let promise = tcp.connect({ address: {address: '192.168.xx.xxx', port: xxxx, family: 1} , timeout: 6000});
  3. promise.then(() => {
  4. console.log('connect success');
  5. tcp.send({
  6. data:'Hello, server!'
  7. },err => {
  8. if (err) {
  9. console.log('send fail');
  10. return;
  11. }
  12. console.log('send success');
  13. })
  14. }).catch(err => {
  15. console.log('connect fail');
  16. });

send

send(options: TCPSendOptions): Promise<void>

通過TCPSocket連接發(fā)送數(shù)據(jù)。使用Promise方式作為異步方法。

說明

connect方法調(diào)用成功后,才可調(diào)用此方法。

需要權(quán)限:ohos.permission.INTERNET

系統(tǒng)能力:SystemCapability.Communication.NetStack

參數(shù):

參數(shù)名

類型

必填

說明

options

TCPSendOptions

TCPSocket發(fā)送請(qǐng)求的參數(shù),參考TCPSendOptions。

返回值:

類型

說明

Promise<void>

以Promise形式返回通過TCPSocket連接發(fā)送數(shù)據(jù)的結(jié)果。

錯(cuò)誤碼:

錯(cuò)誤碼ID

錯(cuò)誤信息

401

Parameter error.

201

Permission denied.

示例:

  1. let tcp = socket.constructTCPSocketInstance();
  2. let promise1 = tcp.connect({ address: {address: '192.168.xx.xxx', port: xxxx, family: 1} , timeout: 6000});
  3. promise1.then(() => {
  4. console.log('connect success');
  5. let promise2 = tcp.send({
  6. data:'Hello, server!'
  7. });
  8. promise2.then(() => {
  9. console.log('send success');
  10. }).catch(err => {
  11. console.log('send fail');
  12. });
  13. }).catch(err => {
  14. console.log('connect fail');
  15. });

close

close(callback: AsyncCallback<void>): void

關(guān)閉TCPSocket連接。使用callback方式作為異步方法。

需要權(quán)限:ohos.permission.INTERNET

系統(tǒng)能力:SystemCapability.Communication.NetStack

參數(shù):

參數(shù)名

類型

必填

說明

callback

AsyncCallback<void>

回調(diào)函數(shù)。

錯(cuò)誤碼:

錯(cuò)誤碼ID

錯(cuò)誤信息

201

Permission denied.

示例:

  1. let tcp = socket.constructTCPSocketInstance();
  2. tcp.close(err => {
  3. if (err) {
  4. console.log('close fail');
  5. return;
  6. }
  7. console.log('close success');
  8. })

close

close(): Promise<void>

關(guān)閉TCPSocket連接。使用Promise方式作為異步方法。

需要權(quán)限:ohos.permission.INTERNET

系統(tǒng)能力:SystemCapability.Communication.NetStack

返回值:

類型

說明

Promise<void>

以Promise形式返回關(guān)閉TCPSocket連接的結(jié)果。

錯(cuò)誤碼:

錯(cuò)誤碼ID

錯(cuò)誤信息

201

Permission denied.

示例:

  1. let tcp = socket.constructTCPSocketInstance();
  2. let promise = tcp.close();
  3. promise.then(() => {
  4. console.log('close success');
  5. }).catch(err => {
  6. console.log('close fail');
  7. });

getRemoteAddress

getRemoteAddress(callback: AsyncCallback<NetAddress>): void

獲取對(duì)端Socket地址。使用callback方式作為異步方法。

說明

connect方法調(diào)用成功后,才可調(diào)用此方法。

需要權(quán)限:ohos.permission.INTERNET

系統(tǒng)能力:SystemCapability.Communication.NetStack

參數(shù):

參數(shù)名

類型

必填

說明

callback

AsyncCallback<NetAddress>

回調(diào)函數(shù)。

錯(cuò)誤碼:

錯(cuò)誤碼ID

錯(cuò)誤信息

201

Permission denied.

示例:

  1. let tcp = socket.constructTCPSocketInstance();
  2. let promise = tcp.connect({ address: {address: '192.168.xx.xxx', port: xxxx, family: 1} , timeout: 6000});
  3. promise.then(() => {
  4. console.log('connect success');
  5. tcp.getRemoteAddress((err, data) => {
  6. if (err) {
  7. console.log('getRemoteAddressfail');
  8. return;
  9. }
  10. console.log('getRemoteAddresssuccess:' + JSON.stringify(data));
  11. })
  12. }).catch(err => {
  13. console.log('connect fail');
  14. });

getRemoteAddress

getRemoteAddress(): Promise<NetAddress>

獲取對(duì)端Socket地址。使用Promise方式作為異步方法。

說明

connect方法調(diào)用成功后,才可調(diào)用此方法。

需要權(quán)限:ohos.permission.INTERNET

系統(tǒng)能力:SystemCapability.Communication.NetStack

返回值:

類型

說明

Promise<NetAddress>

以Promise形式返回獲取對(duì)端socket地址的結(jié)果。

錯(cuò)誤碼:

錯(cuò)誤碼ID

錯(cuò)誤信息

201

Permission denied.

示例:

  1. let tcp = socket.constructTCPSocketInstance();
  2. let promise1 = tcp.connect({ address: {address: '192.168.xx.xxx', port: xxxx, family: 1} , timeout: 6000});
  3. promise1.then(() => {
  4. console.log('connect success');
  5. let promise2 = tcp.getRemoteAddress();
  6. promise2.then(() => {
  7. console.log('getRemoteAddress success');
  8. }).catch(err => {
  9. console.log('getRemoteAddressfail');
  10. });
  11. }).catch(err => {
  12. console.log('connect fail');
  13. });

getState

getState(callback: AsyncCallback<SocketStateBase>): void

獲取TCPSocket狀態(tài)。使用callback方式作為異步方法。

說明

bind或connect方法調(diào)用成功后,才可調(diào)用此方法。

需要權(quán)限:ohos.permission.INTERNET

系統(tǒng)能力:SystemCapability.Communication.NetStack

參數(shù):

參數(shù)名

類型

必填

說明

callback

AsyncCallback<SocketStateBase>

回調(diào)函數(shù)。

錯(cuò)誤碼:

錯(cuò)誤碼ID

錯(cuò)誤信息

201

Permission denied.

示例:

  1. let tcp = socket.constructTCPSocketInstance();
  2. let promise = tcp.connect({ address: {address: '192.168.xx.xxx', port: xxxx, family: 1} , timeout: 6000});
  3. promise.then(() => {
  4. console.log('connect success');
  5. tcp.getState((err, data) => {
  6. if (err) {
  7. console.log('getState fail');
  8. return;
  9. }
  10. console.log('getState success:' + JSON.stringify(data));
  11. });
  12. }).catch(err => {
  13. console.log('connect fail');
  14. });

getState

getState(): Promise<SocketStateBase>

獲取TCPSocket狀態(tài)。使用Promise方式作為異步方法。

說明

bind或connect方法調(diào)用成功后,才可調(diào)用此方法。

需要權(quán)限:ohos.permission.INTERNET

系統(tǒng)能力:SystemCapability.Communication.NetStack

返回值:

類型

說明

Promise<SocketStateBase>

以Promise形式返回獲取TCPSocket狀態(tài)的結(jié)果。

錯(cuò)誤碼:

錯(cuò)誤碼ID

錯(cuò)誤信息

201

Permission denied.

示例:

  1. let tcp = socket.constructTCPSocketInstance();
  2. let promise = tcp.connect({ address: {address: '192.168.xx.xxx', port: xxxx, family: 1} , timeout: 6000});
  3. promise.then(() => {
  4. console.log('connect success');
  5. let promise1 = tcp.getState();
  6. promise1.then(() => {
  7. console.log('getState success');
  8. }).catch(err => {
  9. console.log('getState fail');
  10. });
  11. }).catch(err => {
  12. console.log('connect fail');
  13. });

setExtraOptions

setExtraOptions(options: TCPExtraOptions, callback: AsyncCallback<void>): void

設(shè)置TCPSocket連接的其他屬性。使用callback方式作為異步方法。

說明

bind或connect方法調(diào)用成功后,才可調(diào)用此方法。

需要權(quán)限:ohos.permission.INTERNET

系統(tǒng)能力:SystemCapability.Communication.NetStack

參數(shù):

參數(shù)名

類型

必填

說明

options

TCPExtraOptions

TCPSocket連接的其他屬性,參考TCPExtraOptions。

callback

AsyncCallback<void>

回調(diào)函數(shù)。

錯(cuò)誤碼:

錯(cuò)誤碼ID

錯(cuò)誤信息

401

Parameter error.

201

Permission denied.

示例:

  1. let tcp = socket.constructTCPSocketInstance();
  2. let promise = tcp.connect({ address: {address: '192.168.xx.xxx', port: xxxx, family: 1} , timeout: 6000});
  3. promise.then(() => {
  4. console.log('connect success');
  5. tcp.setExtraOptions({
  6. keepAlive: true,
  7. OOBInline: true,
  8. TCPNoDelay: true,
  9. socketLinger: { on:true, linger:10 },
  10. receiveBufferSize: 1000,
  11. sendBufferSize: 1000,
  12. reuseAddress: true,
  13. socketTimeout: 3000,
  14. },err => {
  15. if (err) {
  16. console.log('setExtraOptions fail');
  17. return;
  18. }
  19. console.log('setExtraOptions success');
  20. });
  21. }).catch(err => {
  22. console.log('connect fail');
  23. });

setExtraOptions

setExtraOptions(options: TCPExtraOptions): Promise<void>

設(shè)置TCPSocket連接的其他屬性,使用Promise方式作為異步方法。

說明

bind或connect方法調(diào)用成功后,才可調(diào)用此方法。

需要權(quán)限:ohos.permission.INTERNET

系統(tǒng)能力:SystemCapability.Communication.NetStack

參數(shù):

參數(shù)名

類型

必填

說明

options

TCPExtraOptions

TCPSocket連接的其他屬性,參考TCPExtraOptions。

返回值:

類型

說明

Promise<void>

以Promise形式返回設(shè)置TCPSocket連接的其他屬性的結(jié)果。

錯(cuò)誤碼:

錯(cuò)誤碼ID

錯(cuò)誤信息

401

Parameter error.

201

Permission denied.

示例:

  1. let tcp = socket.constructTCPSocketInstance();
  2. let promise = tcp.connect({ address: {address: '192.168.xx.xxx', port: xxxx, family: 1} , timeout: 6000});
  3. promise.then(() => {
  4. console.log('connect success');
  5. let promise1 = tcp.setExtraOptions({
  6. keepAlive: true,
  7. OOBInline: true,
  8. TCPNoDelay: true,
  9. socketLinger: { on:true, linger:10 },
  10. receiveBufferSize: 1000,
  11. sendBufferSize: 1000,
  12. reuseAddress: true,
  13. socketTimeout: 3000,
  14. });
  15. promise1.then(() => {
  16. console.log('setExtraOptions success');
  17. }).catch(err => {
  18. console.log('setExtraOptions fail');
  19. });
  20. }).catch(err => {
  21. console.log('connect fail');
  22. });

on('message')

on(type: 'message', callback: Callback<{message: ArrayBuffer, remoteInfo: SocketRemoteInfo}>): void

訂閱TCPSocket連接的接收消息事件。使用callback方式作為異步方法。

系統(tǒng)能力:SystemCapability.Communication.NetStack

參數(shù):

參數(shù)名

類型

必填

說明

type

string

訂閱的事件類型。'message':接收消息事件。

callback

Callback<{message: ArrayBuffer, remoteInfo: SocketRemoteInfo}>

回調(diào)函數(shù)。

示例:

  1. let tcp = socket.constructTCPSocketInstance();
  2. tcp.on('message', value => {
  3. console.log("on message, message:" + value.message + ", remoteInfo:" + value.remoteInfo)
  4. });

off('message')

off(type: 'message', callback?: Callback<{message: ArrayBuffer, remoteInfo: SocketRemoteInfo}>): void

取消訂閱TCPSocket連接的接收消息事件。使用callback方式作為異步方法。

說明

可以指定傳入on中的callback取消一個(gè)訂閱,也可以不指定callback清空所有訂閱。

系統(tǒng)能力:SystemCapability.Communication.NetStack

參數(shù):

參數(shù)名

類型

必填

說明

type

string

訂閱的事件類型。'message':接收消息事件。

callback

Callback<{message: ArrayBuffer, remoteInfo: SocketRemoteInfo}>

回調(diào)函數(shù)。

示例:

  1. let tcp = socket.constructTCPSocketInstance();
  2. let callback = value =>{
  3. console.log("on message, message:" + value.message + ", remoteInfo:" + value.remoteInfo);
  4. }
  5. tcp.on('message', callback);
  6. // 可以指定傳入on中的callback取消一個(gè)訂閱,也可以不指定callback清空所有訂閱。
  7. tcp.off('message', callback);
  8. tcp.off('message');

on('connect' | 'close')

on(type: 'connect' | 'close', callback: Callback<void>): void

訂閱TCPSocket的連接事件或關(guān)閉事件。使用callback方式作為異步方法。

系統(tǒng)能力:SystemCapability.Communication.NetStack

參數(shù):

參數(shù)名

類型

必填

說明

type

string

訂閱的事件類型。

- 'connect':連接事件。

- 'close':關(guān)閉事件。

callback

Callback<void>

回調(diào)函數(shù)。

示例:

  1. let tcp = socket.constructTCPSocketInstance();
  2. tcp.on('connect', () => {
  3. console.log("on connect success")
  4. });
  5. tcp.on('close', data => {
  6. console.log("on close success")
  7. });

off('connect' | 'close')

off(type: 'connect' | 'close', callback?: Callback<void>): void

取消訂閱TCPSocket的連接事件或關(guān)閉事件。使用callback方式作為異步方法。

說明

可以指定傳入on中的callback取消一個(gè)訂閱,也可以不指定callback清空所有訂閱。

系統(tǒng)能力:SystemCapability.Communication.NetStack

參數(shù):

參數(shù)名

類型

必填

說明

type

string

訂閱的事件類型。

- 'connect':連接事件。

- 'close':關(guān)閉事件。

callback

Callback<void>

回調(diào)函數(shù)。

示例:

  1. let tcp = socket.constructTCPSocketInstance();
  2. let callback1 = () =>{
  3. console.log("on connect success");
  4. }
  5. tcp.on('connect', callback1);
  6. // 可以指定傳入on中的callback取消一個(gè)訂閱,也可以不指定callback清空所有訂閱。
  7. tcp.off('connect', callback1);
  8. tcp.off('connect');
  9. let callback2 = () =>{
  10. console.log("on close success");
  11. }
  12. tcp.on('close', callback2);
  13. // 可以指定傳入on中的callback取消一個(gè)訂閱,也可以不指定callback清空所有訂閱。
  14. tcp.off('close', callback2);
  15. tcp.off('close');

on('error')

on(type: 'error', callback: ErrorCallback): void

訂閱TCPSocket連接的error事件。使用callback方式作為異步方法。

系統(tǒng)能力:SystemCapability.Communication.NetStack

參數(shù):

參數(shù)名

類型

必填

說明

type

string

訂閱的事件類型。'error':error事件。

callback

ErrorCallback

回調(diào)函數(shù)。

示例:

  1. let tcp = socket.constructTCPSocketInstance();
  2. tcp.on('error', err => {
  3. console.log("on error, err:" + JSON.stringify(err))
  4. });

off('error')

off(type: 'error', callback?: ErrorCallback): void

取消訂閱TCPSocket連接的error事件。使用callback方式作為異步方法。

說明

可以指定傳入on中的callback取消一個(gè)訂閱,也可以不指定callback清空所有訂閱。

系統(tǒng)能力:SystemCapability.Communication.NetStack

參數(shù):

參數(shù)名

類型

必填

說明

type

string

訂閱的事件類型。'error':error事件。

callback

ErrorCallback

回調(diào)函數(shù)。

示例:

  1. let tcp = socket.constructTCPSocketInstance();
  2. let callback = err =>{
  3. console.log("on error, err:" + JSON.stringify(err));
  4. }
  5. tcp.on('error', callback);
  6. // 可以指定傳入on中的callback取消一個(gè)訂閱,也可以不指定callback清空所有訂閱。
  7. tcp.off('error', callback);
  8. tcp.off('error');

TCPConnectOptions

TCPSocket連接的參數(shù)。

系統(tǒng)能力:以下各項(xiàng)對(duì)應(yīng)的系統(tǒng)能力均為SystemCapability.Communication.NetStack。

名稱

類型

必填

說明

address

NetAddress

綁定的地址以及端口。

timeout

number

超時(shí)時(shí)間,單位毫秒(ms)。

TCPSendOptions

TCPSocket發(fā)送請(qǐng)求的參數(shù)。

系統(tǒng)能力:以下各項(xiàng)對(duì)應(yīng)的系統(tǒng)能力均為SystemCapability.Communication.NetStack。

名稱

類型

必填

說明

data

string| ArrayBuffer7+

發(fā)送的數(shù)據(jù)。

encoding

string

字符編碼(UTF-8,UTF-16BE,UTF-16LE,UTF-16,US-AECII,ISO-8859-1),默認(rèn)為UTF-8。

TCPExtraOptions

TCPSocket連接的其他屬性。

系統(tǒng)能力:以下各項(xiàng)對(duì)應(yīng)的系統(tǒng)能力均為SystemCapability.Communication.NetStack。

名稱

類型

必填

說明

keepAlive

boolean

是否保持連接。默認(rèn)為false。

OOBInline

boolean

是否為OOB內(nèi)聯(lián)。默認(rèn)為false。

TCPNoDelay

boolean

TCPSocket連接是否無時(shí)延。默認(rèn)為false。

socketLinger

Object

socket是否繼續(xù)逗留。

- on:是否逗留(true:逗留;false:不逗留)。

- linger:逗留時(shí)長(zhǎng),單位毫秒(ms),取值范圍為0~65535。

當(dāng)入?yún)n設(shè)置為true時(shí),才需要設(shè)置。

receiveBufferSize

number

接收緩沖區(qū)大?。▎挝唬築yte)。

sendBufferSize

number

發(fā)送緩沖區(qū)大?。▎挝唬築yte)。

reuseAddress

boolean

是否重用地址。默認(rèn)為false。

socketTimeout

number

套接字超時(shí)時(shí)間,單位毫秒(ms)。

TCP 錯(cuò)誤碼說明

TCP 其余錯(cuò)誤碼映射形式為:2301000 + Linux內(nèi)核錯(cuò)誤碼。

錯(cuò)誤碼的詳細(xì)介紹參見Socket錯(cuò)誤碼

socket.constructTLSSocketInstance9+

constructTLSSocketInstance(): TLSSocket

創(chuàng)建并返回一個(gè)TLSSocket對(duì)象。

系統(tǒng)能力:SystemCapability.Communication.NetStack

返回值:

類型

說明

TLSSocket

返回一個(gè)TLSSocket對(duì)象。

示例:

  1. let tls = socket.constructTLSSocketInstance();

TLSSocket9+

TLSSocket連接。在調(diào)用TLSSocket的方法前,需要先通過socket.constructTLSSocketInstance創(chuàng)建TLSSocket對(duì)象。

bind9+

bind(address: NetAddress, callback: AsyncCallback<void>): void

綁定IP地址和端口。使用callback方法作為異步方法。

需要權(quán)限:ohos.permission.INTERNET

系統(tǒng)能力:SystemCapability.Communication.NetStack

參數(shù):

參數(shù)名

類型

必填

說明

address

NetAddress

目標(biāo)地址信息,參考NetAddress

callback

AsyncCallback<void>

回調(diào)函數(shù)。成功返回TLSSocket綁定本機(jī)的IP地址和端口的結(jié)果。 失敗返回錯(cuò)誤碼,錯(cuò)誤信息。

錯(cuò)誤碼:

錯(cuò)誤碼ID

錯(cuò)誤信息

401

Parameter error.

201

Permission denied.

2303198

Address already in use.

2300002

System internal error.

示例:

  1. tls.bind({address: '192.168.xx.xxx', port: xxxx, family: 1}, err => {
  2. if (err) {
  3. console.log('bind fail');
  4. return;
  5. }
  6. console.log('bind success');
  7. });

bind9+

bind(address: NetAddress): Promise<void>

綁定IP地址和端口。使用Promise方法作為異步方法。

需要權(quán)限:ohos.permission.INTERNET

系統(tǒng)能力:SystemCapability.Communication.NetStack

參數(shù):

參數(shù)名

類型

必填

說明

address

NetAddress

目標(biāo)地址信息,參考NetAddress。

返回值:

類型

說明

Promise<void>

以Promise形式返回TLSSocket綁定本機(jī)的IP地址和端口的結(jié)果。失敗返回錯(cuò)誤碼,錯(cuò)誤信息。

錯(cuò)誤碼:

錯(cuò)誤碼ID

錯(cuò)誤信息

401

Parameter error.

201

Permission denied.

2303198

Address already in use.

2300002

System internal error.

示例:

  1. let promise = tls.bind({address: '192.168.xx.xxx', port: xxxx, family: 1});
  2. promise.then(() => {
  3. console.log('bind success');
  4. }).catch(err => {
  5. console.log('bind fail');
  6. });

getState9+

getState(callback: AsyncCallback<SocketStateBase>): void

在TLSSocket的bind成功之后,獲取TLSSocket狀態(tài)。使用callback方式作為異步方法。

系統(tǒng)能力:SystemCapability.Communication.NetStack

參數(shù):

參數(shù)名

類型

必填

說明

callback

AsyncCallback<SocketStateBase>

回調(diào)函數(shù)。成功返回TLSSocket狀態(tài),失敗返回錯(cuò)誤碼,錯(cuò)誤信息。

錯(cuò)誤碼:

錯(cuò)誤碼ID

錯(cuò)誤信息

2303188

Socket operation on non-socket.

2300002

System internal error.

示例:

  1. let promise = tls.bind({address: '192.168.xx.xxx', port: xxxx, family: 1}, err => {
  2. if (err) {
  3. console.log('bind fail');
  4. return;
  5. }
  6. console.log('bind success');
  7. });
  8. tls.getState((err, data) => {
  9. if (err) {
  10. console.log('getState fail');
  11. return;
  12. }
  13. console.log('getState success:' + JSON.stringify(data));
  14. });

getState9+

getState(): Promise<SocketStateBase>

在TLSSocket的bind成功之后,獲取TLSSocket狀態(tài)。使用Promise方式作為異步方法。

系統(tǒng)能力:SystemCapability.Communication.NetStack

返回值:

類型

說明

Promise<SocketStateBase>

以Promise形式返回獲取TLSSocket狀態(tài)的結(jié)果。失敗返回錯(cuò)誤碼,錯(cuò)誤信息。

錯(cuò)誤碼:

錯(cuò)誤碼ID

錯(cuò)誤信息

2303188

Socket operation on non-socket.

2300002

System internal error.

示例:

  1. tls.bind({address: '192.168.xx.xxx', port: xxxx, family: 1}, err => {
  2. if (err) {
  3. console.log('bind fail');
  4. return;
  5. }
  6. console.log('bind success');
  7. });
  8. let promise = tls.getState();
  9. promise.then(() => {
  10. console.log('getState success');
  11. }).catch(err => {
  12. console.log('getState fail');
  13. });

setExtraOptions9+

setExtraOptions(options: TCPExtraOptions, callback: AsyncCallback<void>): void

在TLSSocket的bind成功之后,設(shè)置TCPSocket連接的其他屬性。使用callback方式作為異步方法。

系統(tǒng)能力:SystemCapability.Communication.NetStack

參數(shù):

參數(shù)名

類型

必填

說明

options

TCPExtraOptions

TCPSocket連接的其他屬性,參考TCPExtraOptions。

callback

AsyncCallback<void>

回調(diào)函數(shù)。成功返回設(shè)置TCPSocket連接的其他屬性的結(jié)果,失敗返回錯(cuò)誤碼,錯(cuò)誤信息。

錯(cuò)誤碼:

錯(cuò)誤碼ID

錯(cuò)誤信息

401

Parameter error.

2303188

Socket operation on non-socket.

2300002

System internal error.

示例:

  1. tls.bind({address: '192.168.xx.xxx', port: xxxx, family: 1}, err => {
  2. if (err) {
  3. console.log('bind fail');
  4. return;
  5. }
  6. console.log('bind success');
  7. });
  8. tls.setExtraOptions({
  9. keepAlive: true,
  10. OOBInline: true,
  11. TCPNoDelay: true,
  12. socketLinger: { on:true, linger:10 },
  13. receiveBufferSize: 1000,
  14. sendBufferSize: 1000,
  15. reuseAddress: true,
  16. socketTimeout: 3000,
  17. },err => {
  18. if (err) {
  19. console.log('setExtraOptions fail');
  20. return;
  21. }
  22. console.log('setExtraOptions success');
  23. });

setExtraOptions9+

setExtraOptions(options: TCPExtraOptions): Promise<void>

在TLSSocket的bind成功之后,設(shè)置TCPSocket連接的其他屬性,使用Promise方式作為異步方法。

系統(tǒng)能力:SystemCapability.Communication.NetStack

參數(shù):

參數(shù)名

類型

必填

說明

options

TCPExtraOptions

TCPSocket連接的其他屬性,參考TCPExtraOptions。

返回值:

類型

說明

Promise<void>

以Promise形式返回設(shè)置TCPSocket連接的其他屬性的結(jié)果。失敗返回錯(cuò)誤碼,錯(cuò)誤信息。

錯(cuò)誤碼:

錯(cuò)誤碼ID

錯(cuò)誤信息

401

Parameter error.

2303188

Socket operation on non-socket.

2300002

System internal error.

示例:

  1. tls.bind({address: '192.168.xx.xxx', port: xxxx, family: 1}, err => {
  2. if (err) {
  3. console.log('bind fail');
  4. return;
  5. }
  6. console.log('bind success');
  7. });
  8. let promise = tls.setExtraOptions({
  9. keepAlive: true,
  10. OOBInline: true,
  11. TCPNoDelay: true,
  12. socketLinger: { on:true, linger:10 },
  13. receiveBufferSize: 1000,
  14. sendBufferSize: 1000,
  15. reuseAddress: true,
  16. socketTimeout: 3000,
  17. });
  18. promise.then(() => {
  19. console.log('setExtraOptions success');
  20. }).catch(err => {
  21. console.log('setExtraOptions fail');
  22. });

connect9+

connect(options: TLSConnectOptions, callback: AsyncCallback<void>): void

在TLSSocket上bind成功之后,進(jìn)行通信連接,并創(chuàng)建和初始化TLS會(huì)話,實(shí)現(xiàn)建立連接過程,啟動(dòng)與服務(wù)器的TLS/SSL握手,實(shí)現(xiàn)數(shù)據(jù)傳輸功能,使用callback方式作為異步方法。

系統(tǒng)能力:SystemCapability.Communication.NetStack

參數(shù):

參數(shù)名

類型

必填

說明

options

TLSConnectOptions

TLSSocket連接所需要的參數(shù)。

callback

AsyncCallback<void>

回調(diào)函數(shù),成功無返回,失敗返回錯(cuò)誤碼,錯(cuò)誤信息。

錯(cuò)誤碼:

錯(cuò)誤碼ID

錯(cuò)誤信息

401

Parameter error.

2303104

Interrupted system call.

2303109

Bad file number.

2303111

Resource temporarily unavailable try again.

2303188

Socket operation on non-socket.

2303191

Protocol wrong type for socket.

2303198

Address already in use.

2303199

Cannot assign requested address.

2303210

Connection timed out.

2303501

SSL is null.

2303502

Error in tls reading.

2303503

Error in tls writing

2303505

Error occurred in the tls system call.

2303506

Error clearing tls connection.

2300002

System internal error.

示例:

  1. let tlsTwoWay = socket.constructTLSSocketInstance(); // Two way authentication
  2. tlsTwoWay.bind({address: '192.168.xxx.xxx', port: 8080, family: 1}, err => {
  3. if (err) {
  4. console.log('bind fail');
  5. return;
  6. }
  7. console.log('bind success');
  8. });
  9. let options = {
  10. ALPNProtocols: ["spdy/1", "http/1.1"],
  11. address: {
  12. address: "192.168.xx.xxx",
  13. port: 8080,
  14. family: 1,
  15. },
  16. secureOptions: {
  17. key: "xxxx",
  18. cert: "xxxx",
  19. ca: ["xxxx"],
  20. password: "xxxx",
  21. protocols: [socket.Protocol.TLSv12],
  22. useRemoteCipherPrefer: true,
  23. signatureAlgorithms: "rsa_pss_rsae_sha256:ECDSA+SHA256",
  24. cipherSuite: "AES256-SHA256",
  25. },
  26. };
  27. tlsTwoWay.connect(options, (err, data) => {
  28. console.error("connect callback error"+err);
  29. console.log(JSON.stringify(data));
  30. });
  31. let tlsOneWay = socket.constructTLSSocketInstance(); // One way authentication
  32. tlsOneWay.bind({address: '192.168.xxx.xxx', port: 8080, family: 1}, err => {
  33. if (err) {
  34. console.log('bind fail');
  35. return;
  36. }
  37. console.log('bind success');
  38. });
  39. let oneWayOptions = {
  40. address: {
  41. address: "192.168.xxx.xxx",
  42. port: 8080,
  43. family: 1,
  44. },
  45. secureOptions: {
  46. ca: ["xxxx","xxxx"],
  47. cipherSuite: "AES256-SHA256",
  48. },
  49. };
  50. tlsOneWay.connect(oneWayOptions, (err, data) => {
  51. console.error("connect callback error"+err);
  52. console.log(JSON.stringify(data));
  53. });

connect9+

connect(options: TLSConnectOptions): Promise<void>

在TLSSocket上bind成功之后,進(jìn)行通信連接,并創(chuàng)建和初始化TLS會(huì)話,實(shí)現(xiàn)建立連接過程,啟動(dòng)與服務(wù)器的TLS/SSL握手,實(shí)現(xiàn)數(shù)據(jù)傳輸功能,該連接包括兩種認(rèn)證方式,單向認(rèn)證與雙向認(rèn)證,使用Promise方式作為異步方法。

系統(tǒng)能力:SystemCapability.Communication.NetStack

參數(shù):

參數(shù)名

類型

必填

說明

options

TLSConnectOptions

連接所需要的參數(shù)。

返回值:

類型

說明

Promise<void>

以Promise形式返回,成功無返回,失敗返回錯(cuò)誤碼,錯(cuò)誤信息。

錯(cuò)誤碼:

錯(cuò)誤碼ID

錯(cuò)誤信息

401

Parameter error.

2303104

Interrupted system call.

2303109

Bad file number.

2303111

Resource temporarily unavailable try again.

2303188

Socket operation on non-socket.

2303191

Protocol wrong type for socket.

2303198

Address already in use.

2303199

Cannot assign requested address.

2303210

Connection timed out.

2303501

SSL is null.

2303502

Error in tls reading.

2303503

Error in tls writing

2303505

Error occurred in the tls system call.

2303506

Error clearing tls connection.

2300002

System internal error.

示例:

  1. let tlsTwoWay = socket.constructTLSSocketInstance(); // Two way authentication
  2. tlsTwoWay.bind({address: '192.168.xxx.xxx', port: 8080, family: 1}, err => {
  3. if (err) {
  4. console.log('bind fail');
  5. return;
  6. }
  7. console.log('bind success');
  8. });
  9. let options = {
  10. ALPNProtocols: ["spdy/1", "http/1.1"],
  11. address: {
  12. address: "xxxx",
  13. port: 8080,
  14. family: 1,
  15. },
  16. secureOptions: {
  17. key: "xxxx",
  18. cert: "xxxx",
  19. ca: ["xxxx"],
  20. password: "xxxx",
  21. protocols: [socket.Protocol.TLSv12],
  22. useRemoteCipherPrefer: true,
  23. signatureAlgorithms: "rsa_pss_rsae_sha256:ECDSA+SHA256",
  24. cipherSuite: "AES256-SHA256",
  25. },
  26. };
  27. tlsTwoWay.connect(options).then(data => {
  28. console.log(JSON.stringify(data));
  29. }).catch(err => {
  30. console.error(err);
  31. });
  32. let tlsOneWay = socket.constructTLSSocketInstance(); // One way authentication
  33. tlsOneWay.bind({address: '192.168.xxx.xxx', port: 8080, family: 1}, err => {
  34. if (err) {
  35. console.log('bind fail');
  36. return;
  37. }
  38. console.log('bind success');
  39. });
  40. let oneWayOptions = {
  41. address: {
  42. address: "192.168.xxx.xxx",
  43. port: 8080,
  44. family: 1,
  45. },
  46. secureOptions: {
  47. ca: ["xxxx","xxxx"],
  48. cipherSuite: "AES256-SHA256",
  49. },
  50. };
  51. tlsOneWay.connect(oneWayOptions).then(data => {
  52. console.log(JSON.stringify(data));
  53. }).catch(err => {
  54. console.error(err);
  55. });

getRemoteAddress9+

getRemoteAddress(callback: AsyncCallback<NetAddress>): void

在TLSSocket通信連接成功之后,獲取對(duì)端Socket地址。使用callback方式作為異步方法。

系統(tǒng)能力:SystemCapability.Communication.NetStack

參數(shù):

參數(shù)名

類型

必填

說明

callback

AsyncCallback<NetAddress>

回調(diào)函數(shù)。成功返回對(duì)端的socket地址,失敗返回錯(cuò)誤碼,錯(cuò)誤信息。

錯(cuò)誤碼:

錯(cuò)誤碼ID

錯(cuò)誤信息

2303188

Socket operation on non-socket.

2300002

System internal error.

示例:

  1. tls.getRemoteAddress((err, data) => {
  2. if (err) {
  3. console.log('getRemoteAddress fail');
  4. return;
  5. }
  6. console.log('getRemoteAddress success:' + JSON.stringify(data));
  7. });

getRemoteAddress9+

getRemoteAddress(): Promise<NetAddress>

在TLSSocket通信連接成功之后,獲取對(duì)端Socket地址。使用Promise方式作為異步方法。

系統(tǒng)能力:SystemCapability.Communication.NetStack

返回值:

類型

說明

Promise<NetAddress>

以Promise形式返回獲取對(duì)端socket地址的結(jié)果。失敗返回錯(cuò)誤碼,錯(cuò)誤信息。

錯(cuò)誤碼:

錯(cuò)誤碼ID

錯(cuò)誤信息

2303188

Socket operation on non-socket.

2300002

System internal error.

示例:

  1. let promise = tls.getRemoteAddress();
  2. promise.then(() => {
  3. console.log('getRemoteAddress success');
  4. }).catch(err => {
  5. console.log('getRemoteAddress fail');
  6. });

getCertificate9+

getCertificate(callback: AsyncCallback<X509CertRawData>): void

在TLSSocket通信連接成功之后,獲取本地的數(shù)字證書,該接口只適用于雙向認(rèn)證時(shí),使用callback方式作為異步方法。

系統(tǒng)能力:SystemCapability.Communication.NetStack

參數(shù):

參數(shù)名

類型

必填

說明

callback

AsyncCallback<X509CertRawData>

回調(diào)函數(shù),成功返回本地的證書,失敗返回錯(cuò)誤碼,錯(cuò)誤信息。

錯(cuò)誤碼:

錯(cuò)誤碼ID

錯(cuò)誤信息

2303501

SSL is null.

2303504

Error looking up x509.

2300002

System internal error.

示例:

  1. tls.getCertificate((err, data) => {
  2. if (err) {
  3. console.log("getCertificate callback error = " + err);
  4. } else {
  5. console.log("getCertificate callback = " + data);
  6. }
  7. });

getCertificate9+

getCertificate():Promise<X509CertRawData>

在TLSSocket通信連接之后,獲取本地的數(shù)字證書,該接口只適用于雙向認(rèn)證時(shí),使用Promise方式作為異步方法。

系統(tǒng)能力:SystemCapability.Communication.NetStack

返回值:

類型

說明

Promise<X509CertRawData>

以Promise形式返回本地的數(shù)字證書的結(jié)果。失敗返回錯(cuò)誤碼,錯(cuò)誤信息。

錯(cuò)誤碼:

錯(cuò)誤碼ID

錯(cuò)誤信息

2303501

SSL is null.

2303504

Error looking up x509.

2300002

System internal error.

示例:

  1. tls.getCertificate().then(data => {
  2. console.log(data);
  3. }).catch(err => {
  4. console.error(err);
  5. });

getRemoteCertificate9+

getRemoteCertificate(callback: AsyncCallback<X509CertRawData>): void

在TLSSocket通信連接成功之后,獲取服務(wù)端的數(shù)字證書,使用callback方式作為異步方法。

系統(tǒng)能力:SystemCapability.Communication.NetStack

參數(shù):

參數(shù)名

類型

必填

說明

callback

AsyncCallback<X509CertRawData>

回調(diào)函數(shù),返回服務(wù)端的證書。失敗返回錯(cuò)誤碼,錯(cuò)誤信息。

錯(cuò)誤碼:

錯(cuò)誤碼ID

錯(cuò)誤信息

2303501

SSL is null.

2300002

System internal error.

示例:

  1. tls.getRemoteCertificate((err, data) => {
  2. if (err) {
  3. console.log("getRemoteCertificate callback error = " + err);
  4. } else {
  5. console.log("getRemoteCertificate callback = " + data);
  6. }
  7. });

getRemoteCertificate9+

getRemoteCertificate():Promise<X509CertRawData>

在TLSSocket通信連接成功之后,獲取服務(wù)端的數(shù)字證書,使用Promise方式作為異步方法。

系統(tǒng)能力:SystemCapability.Communication.NetStack

返回值:

類型

說明

Promise<X509CertRawData>

以Promise形式返回服務(wù)端的數(shù)字證書的結(jié)果。失敗返回錯(cuò)誤碼,錯(cuò)誤信息。

錯(cuò)誤碼:

錯(cuò)誤碼ID

錯(cuò)誤信息

2303501

SSL is null.

2300002

System internal error.

示例:

  1. tls.getRemoteCertificate().then(data => {
  2. console.log(data);
  3. }).catch(err => {
  4. console.error(err);
  5. });

getProtocol9+

getProtocol(callback: AsyncCallback<string>): void

在TLSSocket通信連接成功之后,獲取通信的協(xié)議版本,使用callback方式作為異步方法。

系統(tǒng)能力:SystemCapability.Communication.NetStack

參數(shù):

參數(shù)名

類型

必填

說明

callback

AsyncCallback<string>

回調(diào)函數(shù),返回通信的協(xié)議。失敗返回錯(cuò)誤碼,錯(cuò)誤信息。

錯(cuò)誤碼:

錯(cuò)誤碼ID

錯(cuò)誤信息

2303501

SSL is null.

2303505

Error occurred in the tls system call.

2300002

System internal error.

示例:

  1. tls.getProtocol((err, data) => {
  2. if (err) {
  3. console.log("getProtocol callback error = " + err);
  4. } else {
  5. console.log("getProtocol callback = " + data);
  6. }
  7. });

getProtocol9+

getProtocol():Promise<string>

在TLSSocket通信連接成功之后,獲取通信的協(xié)議版本,使用Promise方式作為異步方法。

系統(tǒng)能力:SystemCapability.Communication.NetStack

返回值:

類型

說明

Promise<string>

以Promise形式返回通信的協(xié)議。失敗返回錯(cuò)誤碼,錯(cuò)誤信息。

錯(cuò)誤碼:

錯(cuò)誤碼ID

錯(cuò)誤信息

2303501

SSL is null.

2303505

Error occurred in the tls system call.

2300002

System internal error.

示例:

  1. tls.getProtocol().then(data => {
  2. console.log(data);
  3. }).catch(err => {
  4. console.error(err);
  5. });

getCipherSuite9+

getCipherSuite(callback: AsyncCallback<Array<string>>): void

在TLSSocket通信連接成功之后,獲取通信雙方協(xié)商后的加密套件,使用callback方式作為異步方法。

系統(tǒng)能力:SystemCapability.Communication.NetStack

參數(shù):

參數(shù)名

類型

必填

說明

callback

AsyncCallback<Array<string>>

回調(diào)函數(shù),返回通信雙方支持的加密套件。 失敗返回錯(cuò)誤碼,錯(cuò)誤信息。

錯(cuò)誤碼:

錯(cuò)誤碼ID

錯(cuò)誤信息

2303501

SSL is null.

2303502

Error in tls reading.

2303505

Error occurred in the tls system call.

2300002

System internal error.

示例:

  1. tls.getCipherSuite((err, data) => {
  2. if (err) {
  3. console.log("getCipherSuite callback error = " + err);
  4. } else {
  5. console.log("getCipherSuite callback = " + data);
  6. }
  7. });

getCipherSuite9+

getCipherSuite(): Promise<Array<string>>

在TLSSocket通信連接成功之后,獲取通信雙方協(xié)商后的加密套件,使用Promise方式作為異步方法。

系統(tǒng)能力:SystemCapability.Communication.NetStack

返回值:

類型

說明

Promise<Array<string>>

以Promise形式返回通信雙方支持的加密套件。失敗返回錯(cuò)誤碼,錯(cuò)誤信息。

錯(cuò)誤碼:

錯(cuò)誤碼ID

錯(cuò)誤信息

2303501

SSL is null.

2303502

Error in tls reading.

2303505

Error occurred in the tls system call.

2300002

System internal error.

示例:

  1. tls.getCipherSuite().then(data => {
  2. console.log('getCipherSuite success:' + JSON.stringify(data));
  3. }).catch(err => {
  4. console.error(err);
  5. });

getSignatureAlgorithms9+

getSignatureAlgorithms(callback: AsyncCallback<Array<string>>): void

在TLSSocket通信連接成功之后,獲取通信雙方協(xié)商后簽名算法,該接口只適配雙向認(rèn)證模式下,使用callback方式作為異步方法。

系統(tǒng)能力:SystemCapability.Communication.NetStack

參數(shù):

參數(shù)名

類型

必填

說明

callback

AsyncCallback<Array<string>>

回調(diào)函數(shù),返回雙方支持的簽名算法。

錯(cuò)誤碼:

錯(cuò)誤碼ID

錯(cuò)誤信息

2303501

SSL is null.

2300002

System internal error.

示例:

  1. tls.getSignatureAlgorithms((err, data) => {
  2. if (err) {
  3. console.log("getSignatureAlgorithms callback error = " + err);
  4. } else {
  5. console.log("getSignatureAlgorithms callback = " + data);
  6. }
  7. });

getSignatureAlgorithms9+

getSignatureAlgorithms(): Promise<Array<string>>

在TLSSocket通信連接成功之后,獲取通信雙方協(xié)商后的簽名算法,該接口只適配雙向認(rèn)證模式下,使用Promise方式作為異步方法。

系統(tǒng)能力:SystemCapability.Communication.NetStack

返回值:

類型

說明

Promise<Array<string>>

以Promise形式返回獲取到的雙方支持的簽名算法。

錯(cuò)誤碼:

錯(cuò)誤碼ID

錯(cuò)誤信息

2303501

SSL is null.

2300002

System internal error.

示例:

  1. tls.getSignatureAlgorithms().then(data => {
  2. console.log("getSignatureAlgorithms success" + data);
  3. }).catch(err => {
  4. console.error(err);
  5. });

send9+

send(data: string, callback: AsyncCallback<void>): void

在TLSSocket通信連接成功之后,向服務(wù)端發(fā)送消息,使用callback方式作為異步方法。

系統(tǒng)能力:SystemCapability.Communication.NetStack

參數(shù):

參數(shù)名

類型

必填

說明

data

string

發(fā)送的數(shù)據(jù)內(nèi)容。

callback

AsyncCallback<void>

回調(diào)函數(shù),返回TLSSocket發(fā)送數(shù)據(jù)的結(jié)果。失敗返回錯(cuò)誤碼,錯(cuò)誤信息。

錯(cuò)誤碼:

錯(cuò)誤碼ID

錯(cuò)誤信息

401

Parameter error.

2303501

SSL is null.

2303503

Error in tls writing

2303505

Error occurred in the tls system call.

2303506

Error clearing tls connection.

2300002

System internal error.

示例:

  1. tls.send("xxxx", (err) => {
  2. if (err) {
  3. console.log("send callback error = " + err);
  4. } else {
  5. console.log("send success");
  6. }
  7. });

send9+

send(data: string): Promise<void>

在TLSSocket通信連接成功之后,向服務(wù)端發(fā)送消息,使用Promise方式作為異步方法。

系統(tǒng)能力:SystemCapability.Communication.NetStack

參數(shù):

參數(shù)名

類型

必填

說明

data

string

發(fā)送的數(shù)據(jù)內(nèi)容。

錯(cuò)誤碼:

錯(cuò)誤碼ID

錯(cuò)誤信息

401

Parameter error.

2303501

SSL is null.

2303503

Error in tls writing

2303505

Error occurred in the tls system call.

2303506

Error clearing tls connection.

2300002

System internal error.

返回值:

類型

說明

Promise<void>

以Promise形式返回,返回TLSSocket發(fā)送數(shù)據(jù)的結(jié)果。失敗返回錯(cuò)誤碼,錯(cuò)誤信息。

示例:

  1. tls.send("xxxx").then(() =>{
  2. console.log("send success");
  3. }).catch(err => {
  4. console.error(err);
  5. });

close9+

close(callback: AsyncCallback<void>): void

在TLSSocket通信連接成功之后,斷開連接,使用callback方式作為異步方法。

系統(tǒng)能力:SystemCapability.Communication.NetStack

參數(shù):

參數(shù)名

類型

必填

說明

callback

AsyncCallback<void>

回調(diào)函數(shù),成功返回TLSSocket關(guān)閉連接的結(jié)果。 失敗返回錯(cuò)誤碼,錯(cuò)誤信息。

錯(cuò)誤碼:

錯(cuò)誤碼ID

錯(cuò)誤信息

2303501

SSL is null.

2303505

Error occurred in the tls system call.

2303506

Error clearing tls connection.

2300002

System internal error.

示例:

  1. tls.close((err) => {
  2. if (err) {
  3. console.log("close callback error = " + err);
  4. } else {
  5. console.log("close success");
  6. }
  7. });

close9+

close(): Promise<void>

在TLSSocket通信連接成功之后,斷開連接,使用Promise方式作為異步方法。

系統(tǒng)能力:SystemCapability.Communication.NetStack

返回值:

類型

說明

Promise<void>

以Promise形式返回,返回TLSSocket關(guān)閉連接的結(jié)果。失敗返回錯(cuò)誤碼,錯(cuò)誤信息。

錯(cuò)誤碼:

錯(cuò)誤碼ID

錯(cuò)誤信息

2303501

SSL is null.

2303505

Error occurred in the tls system call.

2303506

Error clearing tls connection.

2300002

System internal error.

示例:

  1. tls.close().then(() =>{
  2. console.log("close success");
  3. }).catch(err => {
  4. console.error(err);
  5. });

TLSConnectOptions9+

TLS連接的操作。

系統(tǒng)能力:SystemCapability.Communication.NetStack

名稱

類型

必填

說明

address

NetAddress

網(wǎng)關(guān)地址。

secureOptions

TLSSecureOptions

TLS安全相關(guān)操作。

ALPNProtocols

Array<string>

ALPN協(xié)議。

TLSSecureOptions9+

TLS安全相關(guān)操作,其中ca證書為必選參數(shù),其他參數(shù)為可選參數(shù)。當(dāng)本地證書cert和私鑰key不為空時(shí),開啟雙向驗(yàn)證模式。cert和key其中一項(xiàng)為空時(shí),開啟單向驗(yàn)證模式。

系統(tǒng)能力:SystemCapability.Communication.NetStack

名稱

類型

必填

說明

ca

string | Array<string>

服務(wù)端的ca證書,用于認(rèn)證校驗(yàn)服務(wù)端的數(shù)字證書。

cert

string

本地客戶端的數(shù)字證書。

key

string

本地?cái)?shù)字證書的私鑰。

password

string

讀取私鑰的密碼。

protocols

Protocol |Array<Protocol>

TLS的協(xié)議版本。

useRemoteCipherPrefer

boolean

優(yōu)先使用對(duì)等方的密碼套件。

signatureAlgorithms

string

通信過程中的簽名算法。

cipherSuite

string

通信過程中的加密套件。

Protocol9+

TLS通信的協(xié)議版本。

系統(tǒng)能力:SystemCapability.Communication.NetStack

名稱

說明

TLSv12

"TLSv1.2"

使用TLSv1.2協(xié)議通信。

TLSv13

"TLSv1.3"

使用TLSv1.3協(xié)議通信。

X509CertRawData9+

存儲(chǔ)證書的數(shù)據(jù)。

系統(tǒng)能力:SystemCapability.Communication.NetStack

類型

說明

cryptoFramework.EncodingBlob

存儲(chǔ)證書的數(shù)據(jù)和編碼格式

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)