diff --git a/zh-cn/application-dev/reference/apis/js-apis-socket.md b/zh-cn/application-dev/reference/apis/js-apis-socket.md index 7d534126be576c6ac9dd266ae8e1f1a466e8e3b6..7c005e050863732e1af8ea6b4003135aeac1a1fe 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-socket.md +++ b/zh-cn/application-dev/reference/apis/js-apis-socket.md @@ -1,1975 +1,2677 @@ -# @ohos.telephony.sms (短信服务) +# @ohos.net.socket (Socket连接) -短信服务提供了管理短信的一些基础能力,包括创建、发送短信,获取、设置发送短信的默认SIM卡槽ID,获取、设置短信服务中心(SMSC)地址,以及检查当前设备是否具备短信发送和接收能力等。 +本模块提供利用Socket进行数据传输的能力,支持TCPSocket、UDPSocket、WebSocket和TLSSocket。 ->**说明:** +> **说明:** > ->本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 +> 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 ## 导入模块 ```js -import sms from '@ohos.telephony.sms'; +import socket from '@ohos.net.socket'; ``` -## sms.createMessage +## socket.constructUDPSocketInstance + +constructUDPSocketInstance(): UDPSocket + +创建一个UDPSocket对象。 + +**系统能力**:SystemCapability.Communication.NetStack + +**返回值:** + +| 类型 | 说明 | +| :--------------------------------- | :---------------------- | +| [UDPSocket](#udpsocket) | 返回一个UDPSocket对象。 | + + +**示例:** + +```js +let udp = socket.constructUDPSocketInstance(); +``` + + +## UDPSocket -createMessage\(pdu: Array<number>, specification: string, callback: AsyncCallback\): void +UDPSocket连接。在调用UDPSocket的方法前,需要先通过[socket.constructUDPSocketInstance](#socketconstructudpsocketinstance)创建UDPSocket对象。 -根据协议数据单元(PDU)和指定的短信协议创建短信实例。使用callback异步回调。 +### bind -**系统能力**:SystemCapability.Telephony.SmsMms +bind(address: NetAddress, callback: AsyncCallback\): void + +绑定IP地址和端口,端口可以指定或由系统随机分配。使用callback方式作为异步方法。 + +**需要权限**:ohos.permission.INTERNET + +**系统能力**:SystemCapability.Communication.NetStack **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ------------- | -------------------------------------------------- | ---- | ------------------------------------------------------------ | -| pdu | Array<number> | 是 | 协议数据单元,从收到的信息中获取。 | -| specification | string | 是 | 短信协议类型。
- 3gpp:表示GSM/UMTS/LTE SMS
- 3gpp2:表示CDMA SMS | -| callback | AsyncCallback<[ShortMessage](#shortmessage)> | 是 | 回调函数。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------------------- | ---- | ------------------------------------------------------ | +| address | [NetAddress](#netaddress) | 是 | 目标地址信息,参考[NetAddress](#netaddress)。 | +| callback | AsyncCallback\ | 是 | 回调函数。 | + +**错误码:** + +| 错误码ID | 错误信息 | +| ------- | ----------------------- | +| 401 | Parameter error. | +| 201 | Permission denied. | **示例:** ```js -const specification = '3gpp'; -// 以数组的形式显示协议数据单元(PDU),类型为number,例如[0x08, 0x91, ...] -const pdu = [0x08, 0x91]; -sms.createMessage(pdu, specification, (err, data) => { - console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`); -}); +let udp = socket.constructUDPSocketInstance(); +udp.bind({address: '192.168.xx.xxx', port: xxxx, family: 1}, err => { + if (err) { + console.log('bind fail'); + return; + } + console.log('bind success'); +}) ``` -## sms.createMessage +### bind + +bind(address: NetAddress): Promise\ -createMessage\(pdu: Array<number>, specification: string\): Promise +绑定IP地址和端口,端口可以指定或由系统随机分配。使用Promise方式作为异步方法。 -根据协议数据单元(PDU)和指定的短信协议创建短信实例。使用Promise异步回调。 +**需要权限**:ohos.permission.INTERNET -**系统能力**:SystemCapability.Telephony.SmsMms +**系统能力**:SystemCapability.Communication.NetStack **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ------------- | ------------------- | ---- | ------------------------------------------------------------ | -| pdu | Array<number> | 是 | 协议数据单元,从收到的信息中获取。 | -| specification | string | 是 | 短信协议类型。
- 3gpp:表示GSM/UMTS/LTE SMS
- 3gpp2:表示CDMA SMS | +| 参数名 | 类型 | 必填 | 说明 | +| ------- | ---------------------------------- | ---- | ------------------------------------------------------ | +| address | [NetAddress](#netaddress) | 是 | 目标地址信息,参考[NetAddress](#netaddress)。 | + +**错误码:** + +| 错误码ID | 错误信息 | +| ------- | ----------------------- | +| 401 | Parameter error. | +| 201 | Permission denied. | **返回值:** -| 类型 | 说明 | -| -------------------------------------------- | --------------------------------- | -| Promise<[ShortMessage](#shortmessage)> | 以Promise形式返回创建的短信实例。 | +| 类型 | 说明 | +| :-------------- | :----------------------------------------- | +| Promise\ | 以Promise形式异步返回UDPSocket绑定的结果。 | **示例:** ```js -const specification = '3gpp'; -// 以数组的形式显示协议数据单元(PDU),类型为number,例如[0x08, 0x91, ...] -const pdu = [0x08, 0x91]; -let promise = sms.createMessage(pdu, specification); -promise.then(data => { - console.log(`createMessage success, promise: data->${JSON.stringify(data)}`); +let udp = socket.constructUDPSocketInstance(); +let promise = udp.bind({address: '192.168.xx.xxx', port: 8080, family: 1}); +promise .then(() => { + console.log('bind success'); }).catch(err => { - console.error(`createMessage failed, promise: err->${JSON.stringify(err)}`); + console.log('bind fail'); }); ``` -## sms.sendMessage -sendMessage(options: SendMessageOptions): void +### send + +send(options: UDPSendOptions, callback: AsyncCallback\): void -发送短信。 +通过UDPSocket连接发送数据。使用callback方式作为异步方法。 -**需要权限**:ohos.permission.SEND_MESSAGES +发送数据前,需要先调用[UDPSocket.bind()](#bind)绑定IP地址和端口。 -**系统能力**:SystemCapability.Telephony.SmsMms +**需要权限**:ohos.permission.INTERNET + +**系统能力**:SystemCapability.Communication.NetStack **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ------- | ----------------------------------------- | ---- | ------------------------------------------------------------ | -| options | [SendMessageOptions](#sendmessageoptions) | 是 | 发送短信的参数和回调,参考[SendMessageOptions](#sendmessageoptions)。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------------------------- | ---- | ------------------------------------------------------------ | +| options | [UDPSendOptions](#udpsendoptions) | 是 | UDPSocket发送参数,参考[UDPSendOptions](#udpsendoptions)。 | +| callback | AsyncCallback\ | 是 | 回调函数。 | + +**错误码:** + +| 错误码ID | 错误信息 | +| ------- | ----------------------- | +| 401 | Parameter error. | +| 201 | Permission denied. | **示例:** ```js -let sendCallback = function (err, data) { - console.log(`sendCallback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`); -} -let deliveryCallback = function (err, data) { - console.log(`deliveryCallback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`); -} -let slotId = 0; -let content = '短信内容'; -let destinationHost = '+861xxxxxxxxxx'; -let serviceCenter = '+861xxxxxxxxxx'; -let destinationPort = 1000; -let options = {slotId, content, destinationHost, serviceCenter, destinationPort, sendCallback, deliveryCallback}; -sms.sendMessage(options); +let udp = socket.constructUDPSocketInstance(); +udp.send({ + data:'Hello, server!', + address: { + address:'192.168.xx.xxx', + port:xxxx, + family:1 + } +}, err=> { + if (err) { + console.log('send fail'); + return; + } + console.log('send success'); +}) ``` -## sms.getDefaultSmsSlotId7+ +### send + +send(options: UDPSendOptions): Promise\ -getDefaultSmsSlotId\(callback: AsyncCallback<number>\): void +通过UDPSocket连接发送数据。使用Promise方式作为异步方法。 -获取发送短信的默认SIM卡槽ID。使用callback异步回调。 +发送数据前,需要先调用[UDPSocket.bind()](#bind)绑定IP地址和端口。 -**系统能力**:SystemCapability.Telephony.SmsMms +**需要权限**:ohos.permission.INTERNET + +**系统能力**:SystemCapability.Communication.NetStack **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | --------------------------- | ---- | ---------------------------------------- | -| callback | AsyncCallback<number> | 是 | 回调函数。
- 0:卡槽1
- 1:卡槽2 | +| 参数名 | 类型 | 必填 | 说明 | +| ------- | ---------------------------------------- | ---- | ------------------------------------------------------------ | +| options | [UDPSendOptions](#udpsendoptions) | 是 | UDPSocket发送参数,参考[UDPSendOptions](#udpsendoptions)。 | + +**错误码:** + +| 错误码ID | 错误信息 | +| ------- | ----------------------- | +| 401 | Parameter error. | +| 201 | Permission denied. | + +**返回值:** + +| 类型 | 说明 | +| :-------------- | :--------------------------------------------- | +| Promise\ | 以Promise形式返回UDPSocket连接发送数据的结果。 | **示例:** ```js -sms.getDefaultSmsSlotId((err, data) => { - console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`); +let udp = socket.constructUDPSocketInstance(); +let promise = udp.send({ + data:'Hello, server!', + address: { + address:'192.168.xx.xxx', + port:xxxx, + family:1 + } +}); +promise.then(() => { + console.log('send success'); +}).catch(err => { + console.log('send fail'); }); ``` -## sms.getDefaultSmsSlotId7+ +### close + +close(callback: AsyncCallback\): void + +关闭UDPSocket连接。使用callback方式作为异步方法。 + +**需要权限**:ohos.permission.INTERNET + +**系统能力**:SystemCapability.Communication.NetStack + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | --------------------- | ---- | ---------- | +| callback | AsyncCallback\ | 是 | 回调函数。 | + +**示例:** + +```js +let udp = socket.constructUDPSocketInstance(); +udp.close(err => { + if (err) { + console.log('close fail'); + return; + } + console.log('close success'); +}) +``` + + +### close -getDefaultSmsSlotId\(\): Promise<number> +close(): Promise\ -获取发送短信的默认SIM卡槽ID。使用Promise异步回调。 +关闭UDPSocket连接。使用Promise方式作为异步方法。 -**系统能力**:SystemCapability.Telephony.SmsMms +**需要权限**:ohos.permission.INTERNET + +**系统能力**:SystemCapability.Communication.NetStack **返回值:** -| 类型 | 说明 | -| --------------- | ------------------------------------------------------------ | -| Promise<number> | 以Promise形式返回发送短信的默认SIM卡:
- 0:卡槽1
- 1:卡槽2 | +| 类型 | 说明 | +| :-------------- | :----------------------------------------- | +| Promise\ | 以Promise形式返回关闭UDPSocket连接的结果。 | **示例:** ```js -let promise = sms.getDefaultSmsSlotId(); -promise.then(data => { - console.log(`getDefaultSmsSlotId success, promise: data->${JSON.stringify(data)}`); +let udp = socket.constructUDPSocketInstance(); +let promise = udp.close(); +promise.then(() => { + console.log('close success'); }).catch(err => { - console.error(`getDefaultSmsSlotId failed, promise: err->${JSON.stringify(err)}`); + console.log('close fail'); }); ``` -## sms.setDefaultSmsSlotId7+ -setDefaultSmsSlotId\(slotId: number, callback: AsyncCallback<void>\): void +### getState + +getState(callback: AsyncCallback\): void -设置发送短信的默认SIM卡槽ID。使用callback异步回调。 +获取UDPSocket状态。使用callback方式作为异步方法。 -**系统接口:** 此接口为系统接口。 +>**说明:** +>bind方法调用成功后,才可调用此方法。 -**需要权限**:ohos.permission.SET_TELEPHONY_STATE +**需要权限**:ohos.permission.INTERNET -**系统能力**:SystemCapability.Telephony.SmsMms +**系统能力**:SystemCapability.Communication.NetStack **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ------------------------- | ---- | ------------------------------------------------------------ | -| slotId | number | 是 | SIM卡槽ID。
- 0:卡槽1
- 1:卡槽2
- -1:清除默认配置 | -| callback | AsyncCallback<void> | 是 | 回调函数。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------------------------------------------------------ | ---- | ---------- | +| callback | AsyncCallback<[SocketStateBase](#socketstatebase)> | 是 | 回调函数。 | **错误码:** -以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)错误码。 - -| 错误码ID | 错误信息 | -| -------- | -------------------------------------------- | -| 201 | Permission denied. | -| 401 | Parameter error. | -| 8300001 | Invalid parameter value. | -| 8300002 | Operation failed. Cannot connect to service. | -| 8300003 | System internal error. | -| 8300004 | Do not have sim card. | -| 8300999 | Unknown error code. | + +| 错误码ID | 错误信息 | +| ------- | ----------------------- | +| 201 | Permission denied. | **示例:** ```js -sms.setDefaultSmsSlotId(0, (err, data) => { - console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`); -}); +let udp = socket.constructUDPSocketInstance(); +udp.bind({address: '192.168.xx.xxx', port: xxxx, family: 1}, err => { + if (err) { + console.log('bind fail'); + return; + } + console.log('bind success'); + udp.getState((err, data) => { + if (err) { + console.log('getState fail'); + return; + } + console.log('getState success:' + JSON.stringify(data)); + }) +}) ``` -## sms.setDefaultSmsSlotId7+ - -setDefaultSmsSlotId\(slotId: number\): Promise<void> +### getState -设置发送短信的默认SIM卡槽ID。使用Promise异步回调。 +getState(): Promise\ -**系统接口:** 此接口为系统接口。 +获取UDPSocket状态。使用Promise方式作为异步方法。 -**需要权限**:ohos.permission.SET_TELEPHONY_STATE +>**说明:** +>bind方法调用成功后,才可调用此方法。 -**系统能力**:SystemCapability.Telephony.SmsMms +**需要权限**:ohos.permission.INTERNET -**参数:** - -| 参数名 | 类型 | 必填 | 说明 | -| ------ | ------ | ---- | ------------------------------------------------------------ | -| slotId | number | 是 | SIM卡槽ID。
- 0:卡槽1
- 1:卡槽2
- -1:清除默认配置 | +**系统能力**:SystemCapability.Communication.NetStack **返回值:** -| 类型 | 说明 | -| --------------- | ------------------------------- | -| Promise\ | 以Promise形式异步返回设置结果。 | - -**错误码:** -以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)错误码。 - -| 错误码ID | 错误信息 | -| -------- | -------------------------------------------- | -| 201 | Permission denied. | -| 401 | Parameter error. | -| 8300001 | Invalid parameter value. | -| 8300002 | Operation failed. Cannot connect to service. | -| 8300003 | System internal error. | -| 8300004 | Do not have sim card. | -| 8300999 | Unknown error code. | +| 类型 | 说明 | +| :----------------------------------------------- | :----------------------------------------- | +| Promise\<[SocketStateBase](#socketstatebase)\> | 以Promise形式返回获取UDPSocket状态的结果。 | **示例:** ```js -let promise = sms.setDefaultSmsSlotId(0); -promise.then(data => { - console.log(`setDefaultSmsSlotId success, promise: data->${JSON.stringify(data)}`); -}).catch(err => { - console.error(`setDefaultSmsSlotId failed, promise: err->${JSON.stringify(err)}`); -}); +let udp = socket.constructUDPSocketInstance(); +udp.bind({address: '192.168.xx.xxx', port: xxxx, family: 1}, err => { + if (err) { + console.log('bind fail'); + return; + } + console.log('bind success'); + let promise = udp.getState(); + promise.then(data => { + console.log('getState success:' + JSON.stringify(data)); + }).catch(err => { + console.log('getState fail'); + }); +}) ``` -## sms.setSmscAddr7+ -setSmscAddr\(slotId: number, smscAddr: string, callback: AsyncCallback\): void +### setExtraOptions + +setExtraOptions(options: UDPExtraOptions, callback: AsyncCallback\): void -设置短信服务中心(SMSC)地址。使用callback异步回调。 +设置UDPSocket连接的其他属性。使用callback方式作为异步方法。 -**系统接口:** 此接口为系统接口。 +>**说明:** +>bind方法调用成功后,才可调用此方法。 -**需要权限**:ohos.permission.SET_TELEPHONY_STATE,该权限为系统权限 +**需要权限**:ohos.permission.INTERNET -**系统能力**:SystemCapability.Telephony.SmsMms +**系统能力**:SystemCapability.Communication.NetStack **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ------------------------- | ---- | ----------------------------------------- | -| slotId | number | 是 | SIM卡槽ID:
- 0:卡槽1
- 1:卡槽2 | -| smscAddr | string | 是 | 短信服务中心地址。 | -| callback | AsyncCallback<void> | 是 | 回调函数。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------------------------- | ---- | ------------------------------------------------------------ | +| options | [UDPExtraOptions](#udpextraoptions) | 是 | UDPSocket连接的其他属性,参考[UDPExtraOptions](#udpextraoptions)。 | +| callback | AsyncCallback\ | 是 | 回调函数。 | **错误码:** -以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)错误码。 -| 错误码ID | 错误信息 | -| -------- | -------------------------------------------- | -| 201 | Permission denied. | -| 401 | Parameter error. | -| 8300001 | Invalid parameter value. | -| 8300002 | Operation failed. Cannot connect to service. | -| 8300003 | System internal error. | -| 8300999 | Unknown error code. | +| 错误码ID | 错误信息 | +| ------- | ----------------------- | +| 401 | Parameter error. | +| 201 | Permission denied. | **示例:** ```js -let slotId = 0; -let smscAddr = '+861xxxxxxxxxx'; -sms.setSmscAddr(slotId, smscAddr, (err,data) => { - console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`); -}); +let udp = socket.constructUDPSocketInstance(); +udp.bind({address:'192.168.xx.xxx', port:xxxx, family:1}, err=> { + if (err) { + console.log('bind fail'); + return; + } + console.log('bind success'); + udp.setExtraOptions({ + receiveBufferSize:1000, + sendBufferSize:1000, + reuseAddress:false, + socketTimeout:6000, + broadcast:true + }, err=> { + if (err) { + console.log('setExtraOptions fail'); + return; + } + console.log('setExtraOptions success'); + }) +}) ``` -## sms.setSmscAddr7+ +### setExtraOptions -setSmscAddr\(slotId: number, smscAddr: string\): Promise\ +setExtraOptions(options: UDPExtraOptions): Promise\ -设置短信服务中心(SMSC)地址。使用Promise异步回调。 +设置UDPSocket连接的其他属性。使用Promise方式作为异步方法。 -**系统接口:** 此接口为系统接口。 +>**说明:** +>bind方法调用成功后,才可调用此方法。 -**需要权限**:ohos.permission.SET_TELEPHONY_STATE,该权限为系统权限 +**需要权限**:ohos.permission.INTERNET -**系统能力**:SystemCapability.Telephony.SmsMms +**系统能力**:SystemCapability.Communication.NetStack **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ------ | ---- | ----------------------------------------- | -| slotId | number | 是 | SIM卡槽ID:
- 0:卡槽1
- 1:卡槽2 | -| smscAddr | string | 是 | 短信服务中心地址。 | +| 参数名 | 类型 | 必填 | 说明 | +| ------- | ---------------------------------------- | ---- | ------------------------------------------------------------ | +| options | [UDPExtraOptions](#udpextraoptions) | 是 | UDPSocket连接的其他属性,参考[UDPExtraOptions](#udpextraoptions)。 | **返回值:** -| 类型 | 说明 | -| ------------------- | ------------------------------- | -| Promise<void> | 以Promise形式异步返回设置结果。 | +| 类型 | 说明 | +| :-------------- | :--------------------------------------------------- | +| Promise\ | 以Promise形式返回设置UDPSocket连接的其他属性的结果。 | **错误码:** -以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)错误码。 -| 错误码ID | 错误信息 | -| -------- | -------------------------------------------- | -| 201 | Permission denied. | -| 401 | Parameter error. | -| 8300001 | Invalid parameter value. | -| 8300002 | Operation failed. Cannot connect to service. | -| 8300003 | System internal error. | -| 8300999 | Unknown error code. | +| 错误码ID | 错误信息 | +| ------- | ----------------------- | +| 401 | Parameter error. | +| 201 | Permission denied. | **示例:** ```js -let slotId = 0; -let smscAddr = '+861xxxxxxxxxx'; -let promise = sms.setSmscAddr(slotId, smscAddr); -promise.then(data => { - console.log(`setSmscAddr success, promise: data->${JSON.stringify(data)}`); +let udp = socket.constructUDPSocketInstance(); +let promise = udp.bind({address:'192.168.xx.xxx', port:xxxx, family:1}); +promise.then(() => { + console.log('bind success'); + let promise1 = udp.setExtraOptions({ + receiveBufferSize:1000, + sendBufferSize:1000, + reuseAddress:false, + socketTimeout:6000, + broadcast:true + }); + promise1.then(() => { + console.log('setExtraOptions success'); + }).catch(err => { + console.log('setExtraOptions fail'); + }); }).catch(err => { - console.error(`setSmscAddr failed, promise: err->${JSON.stringify(err)}`); + console.log('bind fail'); }); ``` -## sms.getSmscAddr7+ +### on('message') + +on(type: 'message', callback: Callback\<{message: ArrayBuffer, remoteInfo: SocketRemoteInfo}\>): void + +订阅UDPSocket连接的接收消息事件。使用callback方式作为异步方法。 -getSmscAddr\(slotId: number, callback: AsyncCallback\): void +**系统能力**:SystemCapability.Communication.NetStack -获取短信服务中心(SMSC)地址。使用callback异步回调。 +**参数:** -**系统接口:** 此接口为系统接口。 +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------------------------------------------------------------ | ---- | ----------------------------------------- | +| type | string | 是 | 订阅的事件类型。'message':接收消息事件。 | +| callback | Callback\<{message: ArrayBuffer, remoteInfo: [SocketRemoteInfo](#socketremoteinfo)}\> | 是 | 回调函数。 | -**需要权限**:ohos.permission.GET_TELEPHONY_STATE,该权限为系统权限 +**示例:** -**系统能力**:SystemCapability.Telephony.SmsMms +```js +let udp = socket.constructUDPSocketInstance(); +udp.on('message', value => { + console.log("on message, message:" + value.message + ", remoteInfo:" + value.remoteInfo); +}); +``` + + +### off('message') + +off(type: 'message', callback?: Callback\<{message: ArrayBuffer, remoteInfo: SocketRemoteInfo}\>): void + +取消订阅UDPSocket连接的接收消息事件。使用callback方式作为异步方法。 + +>**说明:** +>可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。 + +**系统能力**:SystemCapability.Communication.NetStack **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | --------------------------- | ---- | ----------------------------------------- | -| slotId | number | 是 | SIM卡槽ID:
- 0:卡槽1
- 1:卡槽2 | -| callback | AsyncCallback<string> | 是 | 回调函数。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------------------------------------------------------------ | ---- | ----------------------------------------- | +| type | string | 是 | 订阅的事件类型。'message':接收消息事件。 | +| callback | Callback<{message: ArrayBuffer, remoteInfo: [SocketRemoteInfo](#socketremoteinfo)}> | 否 | 回调函数。 | + +**示例:** + +```js +let udp = socket.constructUDPSocketInstance(); +let callback = value =>{ + console.log("on message, message:" + value.message + ", remoteInfo:" + value.remoteInfo); +} +udp.on('message', callback); +// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。 +udp.off('message', callback); +udp.off('message'); +``` -**错误码:** -以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)错误码。 -| 错误码ID | 错误信息 | -| -------- | -------------------------------------------- | -| 201 | Permission denied. | -| 401 | Parameter error. | -| 8300001 | Invalid parameter value. | -| 8300002 | Operation failed. Cannot connect to service. | -| 8300003 | System internal error. | -| 8300999 | Unknown error code. | +### on('listening' | 'close') + +on(type: 'listening' | 'close', callback: Callback\): void + +订阅UDPSocket连接的数据包消息事件或关闭事件。使用callback方式作为异步方法。 + +**系统能力**:SystemCapability.Communication.NetStack + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------- | ---- | ------------------------------------------------------------ | +| type | string | 是 | 订阅的事件类型。
- 'listening':数据包消息事件。
- 'close':关闭事件。 | +| callback | Callback\ | 是 | 回调函数。 | **示例:** ```js -let slotId = 0; -sms.getSmscAddr(slotId, (err, data) => { - console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`); +let udp = socket.constructUDPSocketInstance(); +udp.on('listening', () => { + console.log("on listening success"); +}); +udp.on('close', () => { + console.log("on close success" ); }); ``` -## sms.getSmscAddr7+ +### off('listening' | 'close') -getSmscAddr\(slotId: number\): Promise +off(type: 'listening' | 'close', callback?: Callback\): void -获取短信服务中心(SMSC)地址。使用Promise异步回调。 +取消订阅UDPSocket连接的数据包消息事件或关闭事件。使用callback方式作为异步方法。 -**系统接口:** 此接口为系统接口。 - -**需要权限**:ohos.permission.GET_TELEPHONY_STATE,该权限为系统权限 +>**说明:** +>可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。 -**系统能力**:SystemCapability.Telephony.SmsMms +**系统能力**:SystemCapability.Communication.NetStack **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ------ | ------ | ---- | ----------------------------------------- | -| slotId | number | 是 | SIM卡槽ID:
- 0:卡槽1
- 1:卡槽2 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------- | ---- | ------------------------------------------------------------ | +| type | string | 是 | 订阅事件类型。
- 'listening':数据包消息事件。
- 'close':关闭事件。 | +| callback | Callback\ | 否 | 回调函数。 | -**返回值:** +**示例:** + +```js +let udp = socket.constructUDPSocketInstance(); +let callback1 = () =>{ + console.log("on listening, success"); +} +udp.on('listening', callback1); +// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。 +udp.off('listening', callback1); +udp.off('listening'); +let callback2 = () =>{ + console.log("on close, success"); +} +udp.on('close', callback2); +// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。 +udp.off('close', callback2); +udp.off('close'); +``` -| 类型 | 说明 | -| --------------------- | --------------------------------------------- | -| Promise<string> | 以Promise形式返回获取短信服务中心地址的结果。 | -**错误码:** -以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)错误码。 +### on('error') + +on(type: 'error', callback: ErrorCallback): void + +订阅UDPSocket连接的error事件。使用callback方式作为异步方法。 + +**系统能力**:SystemCapability.Communication.NetStack + +**参数:** -| 错误码ID | 错误信息 | -| -------- | -------------------------------------------- | -| 201 | Permission denied. | -| 401 | Parameter error. | -| 8300001 | Invalid parameter value. | -| 8300002 | Operation failed. Cannot connect to service. | -| 8300003 | System internal error. | -| 8300999 | Unknown error code. | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------------- | ---- | ------------------------------------ | +| type | string | 是 | 订阅的事件类型。'error':error事件。 | +| callback | ErrorCallback | 是 | 回调函数。 | **示例:** ```js -let slotId = 0; -let promise = sms.getSmscAddr(slotId); -promise.then(data => { - console.log(`getSmscAddr success, promise: data->${JSON.stringify(data)}`); -}).catch(err => { - console.error(`getSmscAddr failed, promise: err->${JSON.stringify(err)}`); +let udp = socket.constructUDPSocketInstance(); +udp.on('error', err => { + console.log("on error, err:" + JSON.stringify(err)) }); ``` -## sms.hasSmsCapability7+ -hasSmsCapability(): boolean +### off('error') + +off(type: 'error', callback?: ErrorCallback): void + +取消订阅UDPSocket连接的error事件。使用callback方式作为异步方法。 + +>**说明:** +>可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。 + +**系统能力**:SystemCapability.Communication.NetStack + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------------- | ---- | ------------------------------------ | +| type | string | 是 | 订阅的事件类型。'error':error事件。 | +| callback | ErrorCallback | 否 | 回调函数。 | + +**示例:** + +```js +let udp = socket.constructUDPSocketInstance(); +let callback = err =>{ + console.log("on error, err:" + JSON.stringify(err)); +} +udp.on('error', callback); +// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。 +udp.off('error', callback); +udp.off('error'); +``` + + +## NetAddress + +目标地址信息。 + +**系统能力**:SystemCapability.Communication.NetStack + +| 名称 | 类型 | 必填 | 说明 | +| ------- | ------ | ---- | ------------------------------------------------------------ | +| address | string | 是 | 本地绑定的ip地址。 | +| port | number | 否 | 端口号 ,范围0~65535。如果不指定系统随机分配端口。 | +| family | number | 否 | 网络协议类型,可选类型:
- 1:IPv4
- 2:IPv6
默认为1。 | + +## UDPSendOptions + +UDPSocket发送参数。 + +**系统能力**:SystemCapability.Communication.NetStack + +| 名称 | 类型 | 必填 | 说明 | +| ------- | ---------------------------------- | ---- | -------------- | +| data | string \| ArrayBuffer7+ | 是 | 发送的数据。 | +| address | [NetAddress](#netaddress) | 是 | 目标地址信息。 | + +## UDPExtraOptions + +UDPSocket连接的其他属性。 + +**系统能力**:SystemCapability.Communication.NetStack + +| 名称 | 类型 | 必填 | 说明 | +| ----------------- | ------- | ---- | -------------------------------- | +| broadcast | boolean | 否 | 是否可以发送广播。默认为false。 | +| receiveBufferSize | number | 否 | 接收缓冲区大小(单位:Byte)。 | +| sendBufferSize | number | 否 | 发送缓冲区大小(单位:Byte)。 | +| reuseAddress | boolean | 否 | 是否重用地址。默认为false。 | +| socketTimeout | number | 否 | 套接字超时时间,单位毫秒(ms)。 | + +## SocketStateBase -检查当前设备是否具备短信发送和接收能力,该方法是同步方法。 +Socket的状态信息。 -**系统能力**:SystemCapability.Telephony.SmsMms +**系统能力**:SystemCapability.Communication.NetStack + +| 名称 | 类型 | 必填 | 说明 | +| ----------- | ------- | ---- | ---------- | +| isBound | boolean | 是 | 是否绑定。 | +| isClose | boolean | 是 | 是否关闭。 | +| isConnected | boolean | 是 | 是否连接。 | + +## SocketRemoteInfo + +Socket的连接信息。 + +**系统能力**:SystemCapability.Communication.NetStack + +| 名称 | 类型 | 必填 | 说明 | +| ------- | ------ | ---- | ------------------------------------------------------------ | +| address | string | 是 | 本地绑定的ip地址。 | +| family | string | 是 | 网络协议类型,可选类型:
- IPv4
- IPv6
默认为IPv4。 | +| port | number | 是 | 端口号,范围0~65535。 | +| size | number | 是 | 服务器响应信息的字节长度。 | + +## UDP 错误码说明 + +UDP 其余错误码映射形式为:2301000 + Linux内核错误码。 + +错误码的详细介绍参见[Socket错误码](../errorcodes/errorcode-net-socket.md) + +## socket.constructTCPSocketInstance + +constructTCPSocketInstance(): TCPSocket + +创建一个TCPSocket对象。 + +**系统能力**:SystemCapability.Communication.NetStack **返回值:** -| 类型 | 说明 | -| ------- | ------------------------------------------------------------ | -| boolean | - true:设备具备短信发送和接收能力。
- false:设备不具备短信发送和接收能力。 | + | 类型 | 说明 | + | :--------------------------------- | :---------------------- | + | [TCPSocket](#tcpsocket) | 返回一个TCPSocket对象。 | + +**示例:** ```js -let result = sms.hasSmsCapability(); -console.log(`hasSmsCapability: ${JSON.stringify(result)}`); +let tcp = socket.constructTCPSocketInstance(); ``` -## sms.splitMessage8+ -splitMessage(content: string, callback: AsyncCallback>): void +## TCPSocket + +TCPSocket连接。在调用TCPSocket的方法前,需要先通过[socket.constructTCPSocketInstance](#socketconstructtcpsocketinstance)创建TCPSocket对象。 -将长短信拆分为多个片段。使用callback异步回调。 +### bind -**系统接口:** 此接口为系统接口。 +bind(address: NetAddress, callback: AsyncCallback\): void -**需要权限**:ohos.permission.SEND_MESSAGES +绑定IP地址和端口,端口可以指定或由系统随机分配。使用callback方法作为异步方法。 -**系统能力**:SystemCapability.Telephony.SmsMms +**需要权限**:ohos.permission.INTERNET + +**系统能力**:SystemCapability.Communication.NetStack **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ----------------------------- | ---- | ----------------------------- | -| content | string | 是 | 指示短消息内容,不能为null。 | -| callback | AsyncCallback> | 是 | 回调函数。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------------------- | ---- | ------------------------------------------------------ | +| address | [NetAddress](#netaddress) | 是 | 目标地址信息,参考[NetAddress](#netaddress)。 | +| callback | AsyncCallback\ | 是 | 回调函数。 | **错误码:** -以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)错误码。 -| 错误码ID | 错误信息 | -| -------- | -------------------------------------------- | -| 201 | Permission denied. | -| 401 | Parameter error. | -| 8300001 | Invalid parameter value. | -| 8300002 | Operation failed. Cannot connect to service. | -| 8300003 | System internal error. | -| 8300999 | Unknown error code. | +| 错误码ID | 错误信息 | +| ------- | ----------------------- | +| 401 | Parameter error. | +| 201 | Permission denied. | **示例:** ```js -let content = "long message"; -sms.splitMessage(content, (err, data) => { - console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`); -}); +let tcp = socket.constructTCPSocketInstance(); +tcp.bind({address: '192.168.xx.xxx', port: xxxx, family: 1}, err => { + if (err) { + console.log('bind fail'); + return; + } + console.log('bind success'); +}) ``` -## sms.splitMessage8+ +### bind -splitMessage(content: string): Promise> +bind(address: NetAddress): Promise\ -将长短信拆分为多个片段。使用Promise异步回调。 +绑定IP地址和端口,端口可以指定或由系统随机分配。使用Promise方法作为异步方法。 -**系统接口:** 此接口为系统接口。 +**需要权限**:ohos.permission.INTERNET -**需要权限**:ohos.permission.SEND_MESSAGES - -**系统能力**:SystemCapability.Telephony.SmsMms +**系统能力**:SystemCapability.Communication.NetStack **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ------- | ------ | ---- | ---------------------------- | -| content | string | 是 | 指示短消息内容,不能为null。 | +| 参数名 | 类型 | 必填 | 说明 | +| ------- | ---------------------------------- | ---- | ------------------------------------------------------ | +| address | [NetAddress](#netaddress) | 是 | 目标地址信息,参考[NetAddress](#netaddress)。 | **返回值:** -| 类型 | 说明 | -| ----------------------- | ----------------------------------- | -| Promise> | 以Promise形式返回多个片段的的结果。 | +| 类型 | 说明 | +| :-------------- | :------------------------------------------------------- | +| Promise\ | 以Promise形式返回TCPSocket绑定本机的IP地址和端口的结果。 | **错误码:** -以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)错误码。 -| 错误码ID | 错误信息 | -| -------- | -------------------------------------------- | -| 201 | Permission denied. | -| 401 | Parameter error. | -| 8300001 | Invalid parameter value. | -| 8300002 | Operation failed. Cannot connect to service. | -| 8300003 | System internal error. | -| 8300999 | Unknown error code. | +| 错误码ID | 错误信息 | +| ------- | ----------------------- | +| 401 | Parameter error. | +| 201 | Permission denied. | **示例:** ```js -let content = "long message"; -let promise = sms.splitMessage(content); -promise.then(data => { - console.log(`splitMessage success, promise: data->${JSON.stringify(data)}`); +let tcp = socket.constructTCPSocketInstance(); +let promise = tcp.bind({address: '192.168.xx.xxx', port: xxxx, family: 1}); +promise.then(() => { + console.log('bind success'); }).catch(err => { - console.error(`splitMessage failed, promise: err->${JSON.stringify(err)}`); + console.log('bind fail'); }); ``` -## sms.addSimMessage7+ -addSimMessage(options: SimMessageOptions, callback: AsyncCallback): void +### connect -添加SIM卡消息。使用callback异步回调。 +connect(options: TCPConnectOptions, callback: AsyncCallback\): void -**系统接口:** 此接口为系统接口。 +连接到指定的IP地址和端口。使用callback方法作为异步方法。 -**需要权限**:ohos.permission.RECEIVE_SMS,ohos.permission.SEND_MESSAGES +>**说明:** +>bind方法调用成功后,才可调用此方法。 -**系统能力**:SystemCapability.Telephony.SmsMms +**需要权限**:ohos.permission.INTERNET + +**系统能力**:SystemCapability.Communication.NetStack **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ---------------------------------------- | ---- | --------------- | -| options | [SimMessageOptions](#simmessageoptions7) | 是 | SIM卡消息选项。 | -| callback | AsyncCallback<void> | 是 | 回调函数。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------------------------- | ---- | ------------------------------------------------------------ | +| options | [TCPConnectOptions](#tcpconnectoptions) | 是 | TCPSocket连接的参数,参考[TCPConnectOptions](#tcpconnectoptions)。 | +| callback | AsyncCallback\ | 是 | 回调函数。 | **错误码:** -以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)错误码。 -| 错误码ID | 错误信息 | -| -------- | -------------------------------------------- | -| 201 | Permission denied. | -| 401 | Parameter error. | -| 8300001 | Invalid parameter value. | -| 8300002 | Operation failed. Cannot connect to service. | -| 8300003 | System internal error. | -| 8300999 | Unknown error code. | +| 错误码ID | 错误信息 | +| ------- | ----------------------- | +| 401 | Parameter error. | +| 201 | Permission denied. | **示例:** ```js -let simMessageOptions = { - slotId: 0, - smsc: "test", - pdu: "xxxxxx", - status: sms.SimMessageStatus.SIM_MESSAGE_STATUS_READ -}; -sms.addSimMessage(simMessageOptions, (err, data) => { - console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`); -}); +let tcp = socket.constructTCPSocketInstance(); +tcp.connect({ address: {address: '192.168.xx.xxx', port: xxxx, family: 1} , timeout: 6000}, err => { + if (err) { + console.log('connect fail'); + return; + } + console.log('connect success'); +}) ``` -## sms.addSimMessage7+ +### connect -addSimMessage(options: SimMessageOptions): Promise +connect(options: TCPConnectOptions): Promise\ -添加SIM卡消息。使用Promise异步回调。 +连接到指定的IP地址和端口。使用promise方法作为异步方法。 -**系统接口:** 此接口为系统接口。 +**需要权限**:ohos.permission.INTERNET -**需要权限**:ohos.permission.RECEIVE_SMS,ohos.permission.SEND_MESSAGES - -**系统能力**:SystemCapability.Telephony.SmsMms +**系统能力**:SystemCapability.Communication.NetStack **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ------- | ---------------------------------------- | ---- | --------------- | -| options | [SimMessageOptions](#simmessageoptions7) | 是 | SIM卡消息选项。 | +| 参数名 | 类型 | 必填 | 说明 | +| ------- | ---------------------------------------- | ---- | ------------------------------------------------------------ | +| options | [TCPConnectOptions](#tcpconnectoptions) | 是 | TCPSocket连接的参数,参考[TCPConnectOptions](#tcpconnectoptions)。 | **返回值:** -| 类型 | 说明 | -| ------------------- | ----------------------------- | -| Promise<void> | 以Promise形式返回添加的结果。 | +| 类型 | 说明 | +| :-------------- | :--------------------------------------------------------- | +| Promise\ | 以Promise形式返回TCPSocket连接到指定的IP地址和端口的结果。 | **错误码:** -以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)错误码。 -| 错误码ID | 错误信息 | -| -------- | -------------------------------------------- | -| 201 | Permission denied. | -| 401 | Parameter error. | -| 8300001 | Invalid parameter value. | -| 8300002 | Operation failed. Cannot connect to service. | -| 8300003 | System internal error. | -| 8300999 | Unknown error code. | +| 错误码ID | 错误信息 | +| ------- | ----------------------- | +| 401 | Parameter error. | +| 201 | Permission denied. | **示例:** ```js -let simMessageOptions = { - slotId: 0, - smsc: "test", - pdu: "xxxxxx", - status: sms.SimMessageStatus.SIM_MESSAGE_STATUS_READ -}; -let promise = sms.addSimMessage(simMessageOptions); -promise.then(data => { - console.log(`addSimMessage success, promise: data->${JSON.stringify(data)}`); +let tcp = socket.constructTCPSocketInstance(); +let promise = tcp.connect({ address: {address: '192.168.xx.xxx', port: xxxx, family: 1} , timeout: 6000}); +promise.then(() => { + console.log('connect success') }).catch(err => { - console.error(`addSimMessage failed, promise: err->${JSON.stringify(err)}`); + console.log('connect fail'); }); ``` -## sms.delSimMessage7+ -delSimMessage(slotId: number, msgIndex: number, callback: AsyncCallback): void +### send -删除SIM卡消息。使用callback异步回调。 +send(options: TCPSendOptions, callback: AsyncCallback\): void -**系统接口:** 此接口为系统接口。 +通过TCPSocket连接发送数据。使用callback方式作为异步方法。 + +>**说明:** +>connect方法调用成功后,才可调用此方法。 -**需要权限**:ohos.permission.RECEIVE_SMS,ohos.permission.SEND_MESSAGES +**需要权限**:ohos.permission.INTERNET -**系统能力**:SystemCapability.Telephony.SmsMms +**系统能力**:SystemCapability.Communication.NetStack **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ------------------------- | ---- | ----------------------------------------- | -| slotId | number | 是 | SIM卡槽ID:
- 0:卡槽1
- 1:卡槽2 | -| msgIndex | number | 是 | 消息索引。 | -| callback | AsyncCallback<void> | 是 | 回调函数。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | --------------------------------------- | ---- | ------------------------------------------------------------ | +| options | [TCPSendOptions](#tcpsendoptions) | 是 | TCPSocket发送请求的参数,参考[TCPSendOptions](#tcpsendoptions)。 | +| callback | AsyncCallback\ | 是 | 回调函数。 | **错误码:** -以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)错误码。 -| 错误码ID | 错误信息 | -| -------- | -------------------------------------------- | -| 201 | Permission denied. | -| 401 | Parameter error. | -| 8300001 | Invalid parameter value. | -| 8300002 | Operation failed. Cannot connect to service. | -| 8300003 | System internal error. | -| 8300999 | Unknown error code. | +| 错误码ID | 错误信息 | +| ------- | ----------------------- | +| 401 | Parameter error. | +| 201 | Permission denied. | **示例:** ```js -let slotId = 0; -let msgIndex = 1; -sms.delSimMessage(slotId, msgIndex, (err, data) => { - console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`); +let tcp = socket.constructTCPSocketInstance(); +let promise = tcp.connect({ address: {address: '192.168.xx.xxx', port: xxxx, family: 1} , timeout: 6000}); +promise.then(() => { + console.log('connect success'); + tcp.send({ + data:'Hello, server!' + },err => { + if (err) { + console.log('send fail'); + return; + } + console.log('send success'); + }) +}).catch(err => { + console.log('connect fail'); }); ``` -## sms.delSimMessage7+ +### send -delSimMessage(slotId: number, msgIndex: number): Promise +send(options: TCPSendOptions): Promise\ -删除SIM卡信息。使用Promise异步回调。 +通过TCPSocket连接发送数据。使用Promise方式作为异步方法。 -**系统接口:** 此接口为系统接口。 +>**说明:** +>connect方法调用成功后,才可调用此方法。 -**需要权限**:ohos.permission.RECEIVE_SMS,ohos.permission.SEND_MESSAGES +**需要权限**:ohos.permission.INTERNET -**系统能力**:SystemCapability.Telephony.SmsMms +**系统能力**:SystemCapability.Communication.NetStack **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ------ | ---- | ----------------------------------------- | -| slotId | number | 是 | SIM卡槽ID:
- 0:卡槽1
- 1:卡槽2 | -| msgIndex | number | 是 | 消息索引。 | +| 参数名 | 类型 | 必填 | 说明 | +| ------- | --------------------------------------- | ---- | ------------------------------------------------------------ | +| options | [TCPSendOptions](#tcpsendoptions) | 是 | TCPSocket发送请求的参数,参考[TCPSendOptions](#tcpsendoptions)。 | **返回值:** -| 类型 | 说明 | -| ------------------- | ----------------------------- | -| Promise<void> | 以Promise形式返回删除的结果。 | +| 类型 | 说明 | +| :-------------- | :------------------------------------------------- | +| Promise\ | 以Promise形式返回通过TCPSocket连接发送数据的结果。 | **错误码:** -以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)错误码。 -| 错误码ID | 错误信息 | -| -------- | -------------------------------------------- | -| 201 | Permission denied. | -| 401 | Parameter error. | -| 8300001 | Invalid parameter value. | -| 8300002 | Operation failed. Cannot connect to service. | -| 8300003 | System internal error. | -| 8300999 | Unknown error code. | +| 错误码ID | 错误信息 | +| ------- | ----------------------- | +| 401 | Parameter error. | +| 201 | Permission denied. | **示例:** ```js -let slotId = 0; -let msgIndex = 1; -let promise = sms.delSimMessage(slotId, msgIndex); -promise.then(data => { - console.log(`delSimMessage success, promise: data->${JSON.stringify(data)}`); +let tcp = socket.constructTCPSocketInstance(); +let promise1 = tcp.connect({ address: {address: '192.168.xx.xxx', port: xxxx, family: 1} , timeout: 6000}); +promise1.then(() => { + console.log('connect success'); + let promise2 = tcp.send({ + data:'Hello, server!' + }); + promise2.then(() => { + console.log('send success'); + }).catch(err => { + console.log('send fail'); + }); }).catch(err => { - console.error(`delSimMessage failed, promise: err->${JSON.stringify(err)}`); + console.log('connect fail'); }); ``` -## sms.updateSimMessage7+ -updateSimMessage(options: UpdateSimMessageOptions, callback: AsyncCallback): void +### close -更新SIM卡消息。使用callback异步回调。 +close(callback: AsyncCallback\): void -**系统接口:** 此接口为系统接口。 +关闭TCPSocket连接。使用callback方式作为异步方法。 -**需要权限**:ohos.permission.RECEIVE_SMS,ohos.permission.SEND_MESSAGES +**需要权限**:ohos.permission.INTERNET -**系统能力**:SystemCapability.Telephony.SmsMms +**系统能力**:SystemCapability.Communication.NetStack **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ---------------------------------------------------- | ---- | ------------------- | -| options | [UpdateSimMessageOptions](#updatesimmessageoptions7) | 是 | 更新SIM卡消息选项。 | -| callback | AsyncCallback<void> | 是 | 回调函数。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | --------------------- | ---- | ---------- | +| callback | AsyncCallback\ | 是 | 回调函数。 | **错误码:** -以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)错误码。 -| 错误码ID | 错误信息 | -| -------- | -------------------------------------------- | -| 201 | Permission denied. | -| 401 | Parameter error. | -| 8300001 | Invalid parameter value. | -| 8300002 | Operation failed. Cannot connect to service. | -| 8300003 | System internal error. | -| 8300999 | Unknown error code. | +| 错误码ID | 错误信息 | +| ------- | ----------------------- | +| 201 | Permission denied. | **示例:** ```js -let updateSimMessageOptions = { - slotId: 0, - msgIndex: 1, - newStatus: sms.SimMessageStatus.SIM_MESSAGE_STATUS_FREE, - pdu: "xxxxxxx", - smsc: "test" -}; -sms.updateSimMessage(updateSimMessageOptions, (err, data) => { - console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`); +let tcp = socket.constructTCPSocketInstance(); +tcp.close(err => { + if (err) { + console.log('close fail'); + return; + } + console.log('close success'); +}) +``` + + +### close + +close(): Promise\ + +关闭TCPSocket连接。使用Promise方式作为异步方法。 + +**需要权限**:ohos.permission.INTERNET + +**系统能力**:SystemCapability.Communication.NetStack + +**返回值:** + +| 类型 | 说明 | +| :-------------- | :----------------------------------------- | +| Promise\ | 以Promise形式返回关闭TCPSocket连接的结果。 | + +**错误码:** + +| 错误码ID | 错误信息 | +| ------- | ----------------------- | +| 201 | Permission denied. | + +**示例:** + +```js +let tcp = socket.constructTCPSocketInstance(); +let promise = tcp.close(); +promise.then(() => { + console.log('close success'); +}).catch(err => { + console.log('close fail'); }); ``` -## sms.updateSimMessage7+ +### getRemoteAddress -updateSimMessage(options: UpdateSimMessageOptions): Promise +getRemoteAddress(callback: AsyncCallback\): void -更新SIM卡消息。使用Promise异步回调。 +获取对端Socket地址。使用callback方式作为异步方法。 -**系统接口:** 此接口为系统接口。 +>**说明:** +>connect方法调用成功后,才可调用此方法。 -**需要权限**:ohos.permission.RECEIVE_SMS,ohos.permission.SEND_MESSAGES +**需要权限**:ohos.permission.INTERNET -**系统能力**:SystemCapability.Telephony.SmsMms +**系统能力**:SystemCapability.Communication.NetStack **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ------- | ---------------------------------------------------- | ---- | ------------------- | -| options | [UpdateSimMessageOptions](#updatesimmessageoptions7) | 是 | 更新SIM卡消息选项。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------------------------------------------------- | ---- | ---------- | +| callback | AsyncCallback<[NetAddress](#netaddress)> | 是 | 回调函数。 | + +**错误码:** + +| 错误码ID | 错误信息 | +| ------- | ----------------------- | +| 201 | Permission denied. | + +**示例:** + +```js +let tcp = socket.constructTCPSocketInstance(); +let promise = tcp.connect({ address: {address: '192.168.xx.xxx', port: xxxx, family: 1} , timeout: 6000}); +promise.then(() => { + console.log('connect success'); + tcp.getRemoteAddress((err, data) => { + if (err) { + console.log('getRemoteAddressfail'); + return; + } + console.log('getRemoteAddresssuccess:' + JSON.stringify(data)); + }) +}).catch(err => { + console.log('connect fail'); +}); +``` + + +### getRemoteAddress + +getRemoteAddress(): Promise\ + +获取对端Socket地址。使用Promise方式作为异步方法。 + +>**说明:** +>connect方法调用成功后,才可调用此方法。 + +**需要权限**:ohos.permission.INTERNET + +**系统能力**:SystemCapability.Communication.NetStack **返回值:** -| 类型 | 说明 | -| ------------------- | ----------------------------- | -| Promise<void> | 以Promise形式返回更新的结果。 | +| 类型 | 说明 | +| :------------------------------------------ | :------------------------------------------ | +| Promise<[NetAddress](#netaddress)> | 以Promise形式返回获取对端socket地址的结果。 | **错误码:** -以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)错误码。 -| 错误码ID | 错误信息 | -| -------- | -------------------------------------------- | -| 201 | Permission denied. | -| 401 | Parameter error. | -| 8300001 | Invalid parameter value. | -| 8300002 | Operation failed. Cannot connect to service. | -| 8300003 | System internal error. | -| 8300999 | Unknown error code. | +| 错误码ID | 错误信息 | +| ------- | ----------------------- | +| 201 | Permission denied. | **示例:** ```js -let updateSimMessageOptions = { - slotId: 0, - msgIndex: 1, - newStatus: sms.SimMessageStatus.SIM_MESSAGE_STATUS_FREE, - pdu: "xxxxxxx", - smsc: "test" -}; -let promise = sms.updateSimMessage(updateSimMessageOptions); -promise.then(data => { - console.log(`updateSimMessage success, promise: data->${JSON.stringify(data)}`); +let tcp = socket.constructTCPSocketInstance(); +let promise1 = tcp.connect({ address: {address: '192.168.xx.xxx', port: xxxx, family: 1} , timeout: 6000}); +promise1.then(() => { + console.log('connect success'); + let promise2 = tcp.getRemoteAddress(); + promise2.then(() => { + console.log('getRemoteAddress success'); + }).catch(err => { + console.log('getRemoteAddressfail'); + }); }).catch(err => { - console.error(`updateSimMessage failed, promise: err->${JSON.stringify(err)}`); + console.log('connect fail'); }); ``` -## sms.getAllSimMessages7+ -getAllSimMessages(slotId: number, callback: AsyncCallback>): void +### getState -获取所有SIM卡消息。使用callback异步回调。 +getState(callback: AsyncCallback\): void -**系统接口:** 此接口为系统接口。 +获取TCPSocket状态。使用callback方式作为异步方法。 -**需要权限**:ohos.permission.RECEIVE_SMS +>**说明:** +>bind或connect方法调用成功后,才可调用此方法。 + +**需要权限**:ohos.permission.INTERNET -**系统能力**:SystemCapability.Telephony.SmsMms +**系统能力**:SystemCapability.Communication.NetStack **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ----------------------------------------------------------- | ---- | ----------------------------------------- | -| slotId | number | 是 | SIM卡槽ID:
- 0:卡槽1
- 1:卡槽2 | -| callback | AsyncCallback> | 是 | 回调函数。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------------------------------------------------------ | ---- | ---------- | +| callback | AsyncCallback<[SocketStateBase](#socketstatebase)> | 是 | 回调函数。 | **错误码:** -以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)错误码。 -| 错误码ID | 错误信息 | -| -------- | -------------------------------------------- | -| 201 | Permission denied. | -| 401 | Parameter error. | -| 8300001 | Invalid parameter value. | -| 8300002 | Operation failed. Cannot connect to service. | -| 8300003 | System internal error. | -| 8300999 | Unknown error code. | +| 错误码ID | 错误信息 | +| ------- | ----------------------- | +| 201 | Permission denied. | **示例:** ```js -let slotId = 0; -sms.getAllSimMessages(slotId, (err, data) => { - console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`); +let tcp = socket.constructTCPSocketInstance(); +let promise = tcp.connect({ address: {address: '192.168.xx.xxx', port: xxxx, family: 1} , timeout: 6000}); +promise.then(() => { + console.log('connect success'); + tcp.getState((err, data) => { + if (err) { + console.log('getState fail'); + return; + } + console.log('getState success:' + JSON.stringify(data)); + }); +}).catch(err => { + console.log('connect fail'); }); ``` -## sms.getAllSimMessages7+ - -getAllSimMessages(slotId: number): Promise> +### getState -获取所有SIM卡消息。使用Promise异步回调。 +getState(): Promise\ -**系统接口:** 此接口为系统接口。 +获取TCPSocket状态。使用Promise方式作为异步方法。 -**需要权限**:ohos.permission.RECEIVE_SMS - -**系统能力**:SystemCapability.Telephony.SmsMms +>**说明:** +>bind或connect方法调用成功后,才可调用此方法。 -**参数:** +**需要权限**:ohos.permission.INTERNET -| 参数名 | 类型 | 必填 | 说明 | -| ------ | ------ | ---- | ----------------------------------------- | -| slotId | number | 是 | SIM卡槽ID:
- 0:卡槽1
- 1:卡槽2 | +**系统能力**:SystemCapability.Communication.NetStack **返回值:** -| 类型 | 说明 | -| ------------------------------------------------------- | ---------------------------------- | -| PromiseArray<[SimShortMessage](#simshortmessage7)\>> | 以Promise形式返回获取的SIM短消息。 | +| 类型 | 说明 | +| :----------------------------------------------- | :----------------------------------------- | +| Promise<[SocketStateBase](#socketstatebase)> | 以Promise形式返回获取TCPSocket状态的结果。 | **错误码:** -以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)错误码。 -| 错误码ID | 错误信息 | -| -------- | -------------------------------------------- | -| 201 | Permission denied. | -| 401 | Parameter error. | -| 8300001 | Invalid parameter value. | -| 8300002 | Operation failed. Cannot connect to service. | -| 8300003 | System internal error. | -| 8300999 | Unknown error code. | +| 错误码ID | 错误信息 | +| ------- | ----------------------- | +| 201 | Permission denied. | **示例:** ```js -let slotId = 0; -let promise = sms.getAllSimMessages(slotId); -promise.then(data => { - console.log(`getAllSimMessages success, promise: data->${JSON.stringify(data)}`); +let tcp = socket.constructTCPSocketInstance(); +let promise = tcp.connect({ address: {address: '192.168.xx.xxx', port: xxxx, family: 1} , timeout: 6000}); +promise.then(() => { + console.log('connect success'); + let promise1 = tcp.getState(); + promise1.then(() => { + console.log('getState success'); + }).catch(err => { + console.log('getState fail'); + }); }).catch(err => { - console.error(`getAllSimMessages failed, promise: err->${JSON.stringify(err)}`); + console.log('connect fail'); }); ``` -## sms.setCBConfig7+ -setCBConfig(options: CBConfigOptions, callback: AsyncCallback): void +### setExtraOptions -设置小区广播配置。使用callback异步回调。 +setExtraOptions(options: TCPExtraOptions, callback: AsyncCallback\): void -**系统接口:** 此接口为系统接口。 +设置TCPSocket连接的其他属性。使用callback方式作为异步方法。 -**需要权限**:ohos.permission.RECEIVE_SMS +>**说明:** +>bind或connect方法调用成功后,才可调用此方法。 + +**需要权限**:ohos.permission.INTERNET -**系统能力**:SystemCapability.Telephony.SmsMms +**系统能力**:SystemCapability.Communication.NetStack **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ------------------------------------ | ---- | ------------ | -| options | [CBConfigOptions](#cbconfigoptions7) | 是 | 小区广播配置选项。 | -| callback | AsyncCallback<void> | 是 | 回调函数。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ----------------------------------------- | ---- | ------------------------------------------------------------ | +| options | [TCPExtraOptions](#tcpextraoptions) | 是 | TCPSocket连接的其他属性,参考[TCPExtraOptions](#tcpextraoptions)。 | +| callback | AsyncCallback\ | 是 | 回调函数。 | **错误码:** -以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)错误码。 -| 错误码ID | 错误信息 | -| -------- | -------------------------------------------- | -| 201 | Permission denied. | -| 401 | Parameter error. | -| 8300001 | Invalid parameter value. | -| 8300002 | Operation failed. Cannot connect to service. | -| 8300003 | System internal error. | -| 8300999 | Unknown error code. | +| 错误码ID | 错误信息 | +| ------- | ----------------------- | +| 401 | Parameter error. | +| 201 | Permission denied. | **示例:** ```js -let cbConfigOptions = { - slotId: 0, - enable: true, - startMessageId: 100, - endMessageId: 200, - ranType: sms.RanType.TYPE_GSM -}; -sms.setCBConfig(cbConfigOptions, (err, data) => { - console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`); +let tcp = socket.constructTCPSocketInstance(); +let promise = tcp.connect({ address: {address: '192.168.xx.xxx', port: xxxx, family: 1} , timeout: 6000}); +promise.then(() => { + console.log('connect success'); + tcp.setExtraOptions({ + keepAlive: true, + OOBInline: true, + TCPNoDelay: true, + socketLinger: { on:true, linger:10 }, + receiveBufferSize: 1000, + sendBufferSize: 1000, + reuseAddress: true, + socketTimeout: 3000, + },err => { + if (err) { + console.log('setExtraOptions fail'); + return; + } + console.log('setExtraOptions success'); + }); +}).catch(err => { + console.log('connect fail'); }); ``` -## sms.setCBConfig7+ +### setExtraOptions -setCBConfig(options: CBConfigOptions): Promise +setExtraOptions(options: TCPExtraOptions): Promise\ -设置小区广播配置。使用Promise异步回调。 +设置TCPSocket连接的其他属性,使用Promise方式作为异步方法。 -**系统接口:** 此接口为系统接口。 +>**说明:** +>bind或connect方法调用成功后,才可调用此方法。 -**需要权限**:ohos.permission.RECEIVE_SMS +**需要权限**:ohos.permission.INTERNET -**系统能力**:SystemCapability.Telephony.SmsMms +**系统能力**:SystemCapability.Communication.NetStack **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ------- | ------------------------------------ | ---- | ------------ | -| options | [CBConfigOptions](#cbconfigoptions7) | 是 | 小区广播配置选项。 | +| 参数名 | 类型 | 必填 | 说明 | +| ------- | ----------------------------------------- | ---- | ------------------------------------------------------------ | +| options | [TCPExtraOptions](#tcpextraoptions) | 是 | TCPSocket连接的其他属性,参考[TCPExtraOptions](#tcpextraoptions)。 | **返回值:** -| 类型 | 说明 | -| ------------------- | ----------------------------- | -| Promise<void> | 以Promise形式返回设置的结果。 | +| 类型 | 说明 | +| :-------------- | :--------------------------------------------------- | +| Promise\ | 以Promise形式返回设置TCPSocket连接的其他属性的结果。 | **错误码:** -以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)错误码。 -| 错误码ID | 错误信息 | -| -------- | -------------------------------------------- | -| 201 | Permission denied. | -| 401 | Parameter error. | -| 8300001 | Invalid parameter value. | -| 8300002 | Operation failed. Cannot connect to service. | -| 8300003 | System internal error. | -| 8300999 | Unknown error code. | +| 错误码ID | 错误信息 | +| ------- | ----------------------- | +| 401 | Parameter error. | +| 201 | Permission denied. | **示例:** ```js -let cbConfigOptions = { - slotId: 0, - enable: true, - startMessageId: 100, - endMessageId: 200, - ranType: sms.RanType.TYPE_GSM -}; -let promise = sms.setCBConfig(cbConfigOptions); -promise.then(data => { - console.log(`setCBConfig success, promise: data->${JSON.stringify(data)}`); +let tcp = socket.constructTCPSocketInstance(); +let promise = tcp.connect({ address: {address: '192.168.xx.xxx', port: xxxx, family: 1} , timeout: 6000}); +promise.then(() => { + console.log('connect success'); + let promise1 = tcp.setExtraOptions({ + keepAlive: true, + OOBInline: true, + TCPNoDelay: true, + socketLinger: { on:true, linger:10 }, + receiveBufferSize: 1000, + sendBufferSize: 1000, + reuseAddress: true, + socketTimeout: 3000, + }); + promise1.then(() => { + console.log('setExtraOptions success'); + }).catch(err => { + console.log('setExtraOptions fail'); + }); }).catch(err => { - console.error(`setCBConfig failed, promise: err->${JSON.stringify(err)}`); + console.log('connect fail'); }); ``` -## sms.getSmsSegmentsInfo8+ -getSmsSegmentsInfo(slotId: number, message: string, force7bit: boolean, callback: AsyncCallback): void +### on('message') -获取短信段信息。使用callback异步回调。 +on(type: 'message', callback: Callback<{message: ArrayBuffer, remoteInfo: SocketRemoteInfo}\>): void -**系统接口:** 此接口为系统接口。 +订阅TCPSocket连接的接收消息事件。使用callback方式作为异步方法。 -**系统能力**:SystemCapability.Telephony.SmsMms +**系统能力**:SystemCapability.Communication.NetStack **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| --------- | ------------------------------------------------------------ | ---- | ----------------------------------------- | -| slotId | number | 是 | SIM卡槽ID:
- 0:卡槽1
- 1:卡槽2 | -| message | string | 是 | 消息。 | -| force7bit | boolean | 是 | 是否使用7 bit编码。 | -| callback | AsyncCallback<[SmsSegmentsInfo](#smssegmentsinfo8)> | 是 | 回调函数。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------------------------------------------------------------ | ---- | ----------------------------------------- | +| type | string | 是 | 订阅的事件类型。'message':接收消息事件。 | +| callback | Callback<{message: ArrayBuffer, remoteInfo: [SocketRemoteInfo](#socketremoteinfo)}> | 是 | 回调函数。 | -**错误码:** -以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)错误码。 +**示例:** + +```js +let tcp = socket.constructTCPSocketInstance(); +tcp.on('message', value => { + console.log("on message, message:" + value.message + ", remoteInfo:" + value.remoteInfo) +}); +``` -| 错误码ID | 错误信息 | -| -------- | -------------------------------------------- | -| 401 | Parameter error. | -| 8300001 | Invalid parameter value. | -| 8300002 | Operation failed. Cannot connect to service. | -| 8300003 | System internal error. | -| 8300999 | Unknown error code. | + +### off('message') + +off(type: 'message', callback?: Callback<{message: ArrayBuffer, remoteInfo: SocketRemoteInfo}\>): void + +取消订阅TCPSocket连接的接收消息事件。使用callback方式作为异步方法。 + +>**说明:** +>可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。 + +**系统能力**:SystemCapability.Communication.NetStack + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------------------------------------------------------------ | ---- | ----------------------------------------- | +| type | string | 是 | 订阅的事件类型。'message':接收消息事件。 | +| callback | Callback<{message: ArrayBuffer, remoteInfo: [SocketRemoteInfo](#socketremoteinfo)}> | 否 | 回调函数。 | + +**示例:** + +```js +let tcp = socket.constructTCPSocketInstance(); +let callback = value =>{ + console.log("on message, message:" + value.message + ", remoteInfo:" + value.remoteInfo); +} +tcp.on('message', callback); +// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。 +tcp.off('message', callback); +tcp.off('message'); +``` + + +### on('connect' | 'close') + +on(type: 'connect' | 'close', callback: Callback\): void + +订阅TCPSocket的连接事件或关闭事件。使用callback方式作为异步方法。 + +**系统能力**:SystemCapability.Communication.NetStack + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------- | ---- | ------------------------------------------------------------ | +| type | string | 是 | 订阅的事件类型。
- 'connect':连接事件。
- 'close':关闭事件。 | +| callback | Callback\ | 是 | 回调函数。 | **示例:** ```js -let slotId = 0; -sms.getSmsSegmentsInfo(slotId, "message", false, (err, data) => { - console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`); +let tcp = socket.constructTCPSocketInstance(); +tcp.on('connect', () => { + console.log("on connect success") +}); +tcp.on('close', data => { + console.log("on close success") }); ``` -## sms.getSmsSegmentsInfo8+ +### off('connect' | 'close') -getSmsSegmentsInfo(slotId: number, message: string, force7bit: boolean): Promise +off(type: 'connect' | 'close', callback?: Callback\): void -获取短信段信息。使用Promise异步回调。 +取消订阅TCPSocket的连接事件或关闭事件。使用callback方式作为异步方法。 -**系统接口:** 此接口为系统接口。 +>**说明:** +>可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。 -**系统能力**:SystemCapability.Telephony.SmsMms +**系统能力**:SystemCapability.Communication.NetStack **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| --------- | ------- | ---- | ----------------------------------------- | -| slotId | number | 是 | SIM卡槽ID:
- 0:卡槽1
- 1:卡槽2 | -| message | string | 是 | 消息。 | -| force7bit | boolean | 是 | 是否使用7 bit编码。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------- | ---- | ------------------------------------------------------------ | +| type | string | 是 | 订阅的事件类型。
- 'connect':连接事件。
- 'close':关闭事件。 | +| callback | Callback\ | 否 | 回调函数。 | -**返回值:** +**示例:** -| 类型 | 说明 | -| ------------------------------------------------------- | ----------------------------- | -| Promise<[SmsSegmentsInfo](#smssegmentsinfo8)> | 以Promise形式返回短信段信息。 | +```js +let tcp = socket.constructTCPSocketInstance(); +let callback1 = () =>{ + console.log("on connect success"); +} +tcp.on('connect', callback1); +// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。 +tcp.off('connect', callback1); +tcp.off('connect'); +let callback2 = () =>{ + console.log("on close success"); +} +tcp.on('close', callback2); +// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。 +tcp.off('close', callback2); +tcp.off('close'); +``` -**错误码:** -以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)错误码。 -| 错误码ID | 错误信息 | -| -------- | -------------------------------------------- | -| 401 | Parameter error. | -| 8300001 | Invalid parameter value. | -| 8300002 | Operation failed. Cannot connect to service. | -| 8300003 | System internal error. | -| 8300999 | Unknown error code. | +### on('error') + +on(type: 'error', callback: ErrorCallback): void + +订阅TCPSocket连接的error事件。使用callback方式作为异步方法。 + +**系统能力**:SystemCapability.Communication.NetStack + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------------- | ---- | ------------------------------------ | +| type | string | 是 | 订阅的事件类型。'error':error事件。 | +| callback | ErrorCallback | 是 | 回调函数。 | **示例:** ```js -let slotId = 0; -let promise = sms.getSmsSegmentsInfo(slotId, "message", false); -promise.then(data => { - console.log(`getSmsSegmentsInfo success, promise: data->${JSON.stringify(data)}`); -}).catch(err => { - console.error(`getSmsSegmentsInfo failed, promise: err->${JSON.stringify(err)}`); +let tcp = socket.constructTCPSocketInstance(); +tcp.on('error', err => { + console.log("on error, err:" + JSON.stringify(err)) }); ``` -## sms.isImsSmsSupported8+ -isImsSmsSupported(slotId: number, callback: AsyncCallback): void +### off('error') + +off(type: 'error', callback?: ErrorCallback): void + +取消订阅TCPSocket连接的error事件。使用callback方式作为异步方法。 + +>**说明:** +>可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。 + +**系统能力**:SystemCapability.Communication.NetStack + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------------- | ---- | ------------------------------------ | +| type | string | 是 | 订阅的事件类型。'error':error事件。 | +| callback | ErrorCallback | 否 | 回调函数。 | + +**示例:** + +```js +let tcp = socket.constructTCPSocketInstance(); +let callback = err =>{ + console.log("on error, err:" + JSON.stringify(err)); +} +tcp.on('error', callback); +// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。 +tcp.off('error', callback); +tcp.off('error'); +``` + + +## TCPConnectOptions + +TCPSocket连接的参数。 + +**系统能力**:SystemCapability.Communication.NetStack + +| 名称 | 类型 | 必填 | 说明 | +| ------- | ---------------------------------- | ---- | -------------------------- | +| address | [NetAddress](#netaddress) | 是 | 绑定的地址以及端口。 | +| timeout | number | 否 | 超时时间,单位毫秒(ms)。 | + +## TCPSendOptions + +TCPSocket发送请求的参数。 + +**系统能力**:SystemCapability.Communication.NetStack + +| 名称 | 类型 | 必填 | 说明 | +| -------- | ------ | ---- | ------------------------------------------------------------ | +| data | string\| ArrayBuffer7+ | 是 | 发送的数据。 | +| encoding | string | 否 | 字符编码(UTF-8,UTF-16BE,UTF-16LE,UTF-16,US-AECII,ISO-8859-1),默认为UTF-8。 | + +## TCPExtraOptions + +TCPSocket连接的其他属性。 + +**系统能力**:SystemCapability.Communication.NetStack + +| 名称 | 类型 | 必填 | 说明 | +| ----------------- | ------- | ---- | ------------------------------------------------------------ | +| keepAlive | boolean | 否 | 是否保持连接。默认为false。 | +| OOBInline | boolean | 否 | 是否为OOB内联。默认为false。 | +| TCPNoDelay | boolean | 否 | TCPSocket连接是否无时延。默认为false。 | +| socketLinger | Object | 是 | socket是否继续逗留。
- on:是否逗留(true:逗留;false:不逗留)。
- linger:逗留时长,单位毫秒(ms),取值范围为0~65535。
当入参on设置为true时,才需要设置。 | +| receiveBufferSize | number | 否 | 接收缓冲区大小(单位:Byte)。 | +| sendBufferSize | number | 否 | 发送缓冲区大小(单位:Byte)。 | +| reuseAddress | boolean | 否 | 是否重用地址。默认为false。 | +| socketTimeout | number | 否 | 套接字超时时间,单位毫秒(ms)。 | + +## TCP 错误码说明 + +TCP 其余错误码映射形式为:2301000 + Linux内核错误码。 + +错误码的详细介绍参见[Socket错误码](../errorcodes/errorcode-net-socket.md) + +## socket.constructTLSSocketInstance9+ + +constructTLSSocketInstance(): TLSSocket + +创建并返回一个TLSSocket对象。 + +**系统能力**:SystemCapability.Communication.NetStack + +**返回值:** + +| 类型 | 说明 | +| :--------------------------------- | :---------------------- | +| [TLSSocket](#tlssocket9) | 返回一个TLSSocket对象。 | + +**示例:** + +```js +let tls = socket.constructTLSSocketInstance(); +``` + +## TLSSocket9+ + +TLSSocket连接。在调用TLSSocket的方法前,需要先通过[socket.constructTLSSocketInstance](#socketconstructtlssocketinstance9)创建TLSSocket对象。 -如果IMS已注册并且在IMS上支持SMS,则支持通过IMS发送SMS。使用callback异步回调。 +### bind9+ -**系统接口:** 此接口为系统接口。 +bind(address: NetAddress, callback: AsyncCallback\): void -**系统能力**:SystemCapability.Telephony.SmsMms +绑定IP地址和端口。使用callback方法作为异步方法。 + +**需要权限**:ohos.permission.INTERNET + +**系统能力**:SystemCapability.Communication.NetStack **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ---------------------------- | ---- | ---------- | -| slotId | number | 是 | SIM卡槽ID:
- 0:卡槽1
- 1:卡槽2 | -| callback | AsyncCallback<boolean> | 是 | 回调函数。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------------------- | ---- | ------------------------------------------------------ | +| address | [NetAddress](#netaddress) | 是 | 目标地址信息,参考[NetAddress](#netaddress)。 | +| callback | AsyncCallback\ | 是 | 回调函数。成功返回TLSSocket绑定本机的IP地址和端口的结果。 失败返回错误码,错误信息。| **错误码:** -以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)错误码。 -| 错误码ID | 错误信息 | -| -------- | -------------------------------------------- | -| 401 | Parameter error. | -| 8300001 | Invalid parameter value. | -| 8300002 | Operation failed. Cannot connect to service. | -| 8300003 | System internal error. | -| 8300999 | Unknown error code. | +| 错误码ID | 错误信息 | +| ------- | ----------------------- | +| 401 | Parameter error. | +| 201 | Permission denied. | +| 2303198 | Address already in use. | +| 2300002 | System internal error. | **示例:** ```js -let slotId = 0; -sms.isImsSmsSupported(slotId, (err, data) => { - console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`); +tls.bind({address: '192.168.xx.xxx', port: xxxx, family: 1}, err => { + if (err) { + console.log('bind fail'); + return; + } + console.log('bind success'); }); ``` +### bind9+ -## sms.isImsSmsSupported8+ +bind(address: NetAddress): Promise\ -isImsSmsSupported(slotId: number): Promise +绑定IP地址和端口。使用Promise方法作为异步方法。 -如果IMS已注册并且在IMS上支持SMS,则支持通过IMS发送SMS。使用Promise异步回调。 +**需要权限**:ohos.permission.INTERNET -**系统接口:** 此接口为系统接口。 - -**系统能力**:SystemCapability.Telephony.SmsMms +**系统能力**:SystemCapability.Communication.NetStack **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ------ | ------ | ---- | -------------------------------------- | -| slotId | number | 是 | 卡槽ID。
- 0:卡槽1
- 1:卡槽2 | +| 参数名 | 类型 | 必填 | 说明 | +| ------- | ---------------------------------- | ---- | ------------------------------------------------------ | +| address | [NetAddress](#netaddress) | 是 | 目标地址信息,参考[NetAddress](#netaddress)。 | **返回值:** -| 类型 | 说明 | -| ---------------------- | ----------------------- | -| Promise<boolean> | 以Promise形式返回结果。 | +| 类型 | 说明 | +| :-------------- | :------------------------------------------------------- | +| Promise\ | 以Promise形式返回TLSSocket绑定本机的IP地址和端口的结果。失败返回错误码,错误信息。 | **错误码:** -以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)错误码。 -| 错误码ID | 错误信息 | -| -------- | -------------------------------------------- | -| 401 | Parameter error. | -| 8300001 | Invalid parameter value. | -| 8300002 | Operation failed. Cannot connect to service. | -| 8300003 | System internal error. | -| 8300999 | Unknown error code. | +| 错误码ID | 错误信息 | +| ------- | ----------------------- | +| 401 | Parameter error. | +| 201 | Permission denied. | +| 2303198 | Address already in use. | +| 2300002 | System internal error. | **示例:** ```js -let slotId = 0; -let promise = sms.isImsSmsSupported(slotId); -promise.then(data => { - console.log(`isImsSmsSupported success, promise: data->${JSON.stringify(data)}`); +let promise = tls.bind({address: '192.168.xx.xxx', port: xxxx, family: 1}); +promise.then(() => { + console.log('bind success'); }).catch(err => { - console.error(`isImsSmsSupported failed, promise: err->${JSON.stringify(err)}`); + console.log('bind fail'); }); ``` -## sms.getImsShortMessageFormat8+ - -getImsShortMessageFormat(callback: AsyncCallback): void +### getState9+ -获取IMS上支持的SMS格式。使用callback异步回调。 +getState(callback: AsyncCallback\): void -**系统接口:** 此接口为系统接口。 +在TLSSocket的bind成功之后,获取TLSSocket状态。使用callback方式作为异步方法。 -**系统能力**:SystemCapability.Telephony.SmsMms +**系统能力**:SystemCapability.Communication.NetStack **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | --------------------------- | ---- | ---------- | -| callback | AsyncCallback<string> | 是 | 回调函数。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------------------------------------------------------ | ---- | ---------- | +| callback | AsyncCallback\<[SocketStateBase](#socketstatebase)> | 是 | 回调函数。成功返回TLSSocket状态,失败返回错误码,错误信息。 | **错误码:** -以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)错误码。 -| 错误码ID | 错误信息 | -| -------- | -------------------------------------------- | -| 201 | Permission denied. | -| 401 | Parameter error. | -| 8300001 | Invalid parameter value. | -| 8300002 | Operation failed. Cannot connect to service. | -| 8300003 | System internal error. | -| 8300999 | Unknown error code. | +| 错误码ID | 错误信息 | +| ------- | ------------------------------ | +| 2303188 | Socket operation on non-socket.| +| 2300002 | System internal error. | **示例:** ```js -sms.getImsShortMessageFormat((err, data) => { - console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`); +let promise = tls.bind({address: '192.168.xx.xxx', port: xxxx, family: 1}, err => { + if (err) { + console.log('bind fail'); + return; + } + console.log('bind success'); +}); +tls.getState((err, data) => { + if (err) { + console.log('getState fail'); + return; + } + console.log('getState success:' + JSON.stringify(data)); }); ``` +### getState9+ -## sms.getImsShortMessageFormat8+ - -getImsShortMessageFormat(): Promise - -获取IMS上支持的SMS格式。使用Promise异步回调。 +getState(): Promise\ -**系统接口:** 此接口为系统接口。 +在TLSSocket的bind成功之后,获取TLSSocket状态。使用Promise方式作为异步方法。 -**系统能力**:SystemCapability.Telephony.SmsMms +**系统能力**:SystemCapability.Communication.NetStack **返回值:** -| 类型 | 说明 | -| --------------------- | -------------------------- | -| Promise<string> | 以Promise形式返回SMS格式。 | +| 类型 | 说明 | +| :----------------------------------------------- | :----------------------------------------- | +| Promise\<[SocketStateBase](#socketstatebase)> | 以Promise形式返回获取TLSSocket状态的结果。失败返回错误码,错误信息。| **错误码:** -以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)错误码。 -| 错误码ID | 错误信息 | -| -------- | -------------------------------------------- | -| 201 | Permission denied. | -| 401 | Parameter error. | -| 8300001 | Invalid parameter value. | -| 8300002 | Operation failed. Cannot connect to service. | -| 8300003 | System internal error. | -| 8300999 | Unknown error code. | +| 错误码ID | 错误信息 | +| ------- | ------------------------------ | +| 2303188 | Socket operation on non-socket.| +| 2300002 | System internal error. | **示例:** ```js -let promise = sms.getImsShortMessageFormat(); -promise.then(data => { - console.log(`getImsShortMessageFormat success, promise: data->${JSON.stringify(data)}`); +tls.bind({address: '192.168.xx.xxx', port: xxxx, family: 1}, err => { + if (err) { + console.log('bind fail'); + return; + } + console.log('bind success'); +}); +let promise = tls.getState(); +promise.then(() => { + console.log('getState success'); }).catch(err => { - console.error(`getImsShortMessageFormat failed, promise: err->${JSON.stringify(err)}`); + console.log('getState fail'); }); ``` -## sms.decodeMms8+ - -decodeMms(mmsFilePathName: string | Array, callback: AsyncCallback): void +### setExtraOptions9+ -彩信解码。使用callback异步回调。 +setExtraOptions(options: TCPExtraOptions, callback: AsyncCallback\): void -**系统接口:** 此接口为系统接口。 +在TLSSocket的bind成功之后,设置TCPSocket连接的其他属性。使用callback方式作为异步方法。 -**系统能力**:SystemCapability.Telephony.SmsMms +**系统能力**:SystemCapability.Communication.NetStack **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| --------------- | ------------------------------------------------------- | ---- | -------------- | -| mmsFilePathName | string \|Array | 是 | 彩信文件路径名。 | -| callback | AsyncCallback<[MmsInformation](#mmsinformation8)> | 是 | 回调函数。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ----------------------------------------- | ---- | ------------------------------------------------------------ | +| options | [TCPExtraOptions](#tcpextraoptions) | 是 | TCPSocket连接的其他属性,参考[TCPExtraOptions](#tcpextraoptions)。 | +| callback | AsyncCallback\ | 是 | 回调函数。成功返回设置TCPSocket连接的其他属性的结果,失败返回错误码,错误信息。| **错误码:** -以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)错误码。 -| 错误码ID | 错误信息 | -| -------- | -------------------------------------------- | -| 401 | Parameter error. | -| 8300001 | Invalid parameter value. | -| 8300002 | Operation failed. Cannot connect to service. | -| 8300003 | System internal error. | -| 8300999 | Unknown error code. | +| 错误码ID | 错误信息 | +| ------- | ----------------------------- | +| 401 | Parameter error. | +| 2303188 | Socket operation on non-socket.| +| 2300002 | System internal error. | **示例:** ```js -let mmsFilePathName = "filename"; -sms.decodeMms(mmsFilePathName, (err, data) => { - console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`); +tls.bind({address: '192.168.xx.xxx', port: xxxx, family: 1}, err => { + if (err) { + console.log('bind fail'); + return; + } + console.log('bind success'); }); -``` - -## sms.decodeMms8+ +tls.setExtraOptions({ + keepAlive: true, + OOBInline: true, + TCPNoDelay: true, + socketLinger: { on:true, linger:10 }, + receiveBufferSize: 1000, + sendBufferSize: 1000, + reuseAddress: true, + socketTimeout: 3000, +},err => { + if (err) { + console.log('setExtraOptions fail'); + return; + } + console.log('setExtraOptions success'); +}); +``` -decodeMms(mmsFilePathName: string | Array): Promise +### setExtraOptions9+ -彩信解码。使用Promise异步回调。 +setExtraOptions(options: TCPExtraOptions): Promise\ -**系统接口:** 此接口为系统接口。 +在TLSSocket的bind成功之后,设置TCPSocket连接的其他属性,使用Promise方式作为异步方法。 -**系统能力**:SystemCapability.Telephony.SmsMms +**系统能力**:SystemCapability.Communication.NetStack **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| --------------- | ----------------------- | ---- | -------------- | -| mmsFilePathName | string \|Array | 是 | 彩信文件路径名 | +| 参数名 | 类型 | 必填 | 说明 | +| ------- | ----------------------------------------- | ---- | ------------------------------------------------------------ | +| options | [TCPExtraOptions](#tcpextraoptions) | 是 | TCPSocket连接的其他属性,参考[TCPExtraOptions](#tcpextraoptions)。 | **返回值:** -| 类型 | 说明 | -| --------------------------------------------------------- | --------------------------- | -| Promise<<[MmsInformation](#mmsinformation8)>> | 以Promise形式返回彩信信息。 | +| 类型 | 说明 | +| :-------------- | :--------------------------------------------------- | +| Promise\ | 以Promise形式返回设置TCPSocket连接的其他属性的结果。失败返回错误码,错误信息。 | **错误码:** -以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)错误码。 -| 错误码ID | 错误信息 | -| -------- | -------------------------------------------- | -| 401 | Parameter error. | -| 8300001 | Invalid parameter value. | -| 8300002 | Operation failed. Cannot connect to service. | -| 8300003 | System internal error. | -| 8300999 | Unknown error code. | +| 错误码ID | 错误信息 | +| ------- | ------------------------------ | +| 401 | Parameter error. | +| 2303188 | Socket operation on non-socket.| +| 2300002 | System internal error. | **示例:** ```js -let mmsFilePathName = "filename"; -let promise = sms.decodeMms(mmsFilePathName); -promise.then(data => { - console.log(`decodeMms success, promise: data->${JSON.stringify(data)}`); +tls.bind({address: '192.168.xx.xxx', port: xxxx, family: 1}, err => { + if (err) { + console.log('bind fail'); + return; + } + console.log('bind success'); +}); +let promise = tls.setExtraOptions({ + keepAlive: true, + OOBInline: true, + TCPNoDelay: true, + socketLinger: { on:true, linger:10 }, + receiveBufferSize: 1000, + sendBufferSize: 1000, + reuseAddress: true, + socketTimeout: 3000, +}); +promise.then(() => { + console.log('setExtraOptions success'); }).catch(err => { - console.error(`decodeMms failed, promise: err->${JSON.stringify(err)}`); + console.log('setExtraOptions fail'); }); ``` -## sms.encodeMms8+ +### connect9+ -encodeMms(mms: MmsInformation, callback: AsyncCallback>): void +connect(options: TLSConnectOptions, callback: AsyncCallback\): void -彩信编码。使用callback异步回调。 +在TLSSocket上bind成功之后,进行通信连接,并创建和初始化TLS会话,实现建立连接过程,启动与服务器的TLS/SSL握手,实现数据传输功能,使用callback方式作为异步方法。 -**系统接口:** 此接口为系统接口。 - -**系统能力**:SystemCapability.Telephony.SmsMms +**系统能力**:SystemCapability.Communication.NetStack **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ----------------------------------- | ---- | ---------- | -| mms | [MmsInformation](#mmsinformation8) | 是 | 彩信信息。 | -| callback | AsyncCallback<Array> | 是 | 回调函数。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------------------------| ----| --------------- | +| options | [TLSConnectOptions](#tlsconnectoptions9) | 是 | TLSSocket连接所需要的参数。| +| callback | AsyncCallback\ | 是 | 回调函数,成功无返回,失败返回错误码,错误信息。| **错误码:** -以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)错误码。 -| 错误码ID | 错误信息 | -| -------- | -------------------------------------------- | -| 401 | Parameter error. | -| 8300001 | Invalid parameter value. | -| 8300002 | Operation failed. Cannot connect to service. | -| 8300003 | System internal error. | -| 8300999 | Unknown error code. | +| 错误码ID | 错误信息 | +| ------- | -------------------------------------------- | +| 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. | **示例:** ```js -let mmsAcknowledgeInd = { - transactionId: "100", - version: sms.MmsVersionType.MMS_VERSION_1_0, - reportAllowed: sms.ReportType.MMS_YES +let tlsTwoWay = socket.constructTLSSocketInstance(); // Two way authentication +tlsTwoWay.bind({address: '192.168.xxx.xxx', port: 8080, family: 1}, err => { + if (err) { + console.log('bind fail'); + return; + } + console.log('bind success'); +}); +let options = { + ALPNProtocols: ["spdy/1", "http/1.1"], + address: { + address: "192.168.xx.xxx", + port: 8080, + family: 1, + }, + secureOptions: { + key: "xxxx", + cert: "xxxx", + ca: ["xxxx"], + password: "xxxx", + protocols: [socket.Protocol.TLSv12], + useRemoteCipherPrefer: true, + signatureAlgorithms: "rsa_pss_rsae_sha256:ECDSA+SHA256", + cipherSuite: "AES256-SHA256", + }, }; -let mmsInformation = { - messageType: sms.MessageType.TYPE_MMS_ACKNOWLEDGE_IND, - mmsType: mmsAcknowledgeInd +tlsTwoWay.connect(options, (err, data) => { + console.error("connect callback error"+err); + console.log(JSON.stringify(data)); +}); + +let tlsOneWay = socket.constructTLSSocketInstance(); // One way authentication + tlsOneWay.bind({address: '192.168.xxx.xxx', port: 8080, family: 1}, err => { + if (err) { + console.log('bind fail'); + return; + } + console.log('bind success'); +}); +let oneWayOptions = { + address: { + address: "192.168.xxx.xxx", + port: 8080, + family: 1, + }, + secureOptions: { + ca: ["xxxx","xxxx"], + cipherSuite: "AES256-SHA256", + }, }; -sms.encodeMms(mmsInformation, (err, data) => { - console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`); +tlsOneWay.connect(oneWayOptions, (err, data) => { + console.error("connect callback error"+err); + console.log(JSON.stringify(data)); }); ``` +### connect9+ -## sms.encodeMms8+ +connect(options: TLSConnectOptions): Promise\ -encodeMms(mms: MmsInformation): Promise> +在TLSSocket上bind成功之后,进行通信连接,并创建和初始化TLS会话,实现建立连接过程,启动与服务器的TLS/SSL握手,实现数据传输功能,该连接包括两种认证方式,单向认证与双向认证,使用Promise方式作为异步方法。 -彩信编码。使用Promise异步回调。 - -**系统接口:** 此接口为系统接口。 - -**系统能力**:SystemCapability.Telephony.SmsMms +**系统能力**:SystemCapability.Communication.NetStack **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ------ | ---------------------------------- | ---- | ---------- | -| mms | [MmsInformation](#mmsinformation8) | 是 | 彩信信息。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | --------------------------------------| ----| --------------- | +| options | [TLSConnectOptions](#tlsconnectoptions9) | 是 | 连接所需要的参数。| **返回值:** -| 类型 | 说明 | -| ----------------------------- | ----------------------------------- | -| Promise<Array> | 以Promise形式返回彩信编码后的结果。 | +| 类型 | 说明 | +| ------------------------------------------- | ----------------------------- | +| Promise\ | 以Promise形式返回,成功无返回,失败返回错误码,错误信息。| **错误码:** -以下错误码的详细介绍请参见[ohos.telephony(电话子系统)错误码](../../reference/errorcodes/errorcode-telephony.md)错误码。 -| 错误码ID | 错误信息 | -| -------- | -------------------------------------------- | -| 401 | Parameter error. | -| 8300001 | Invalid parameter value. | -| 8300002 | Operation failed. Cannot connect to service. | -| 8300003 | System internal error. | -| 8300999 | Unknown error code. | +| 错误码ID | 错误信息 | +| ------- | -------------------------------------------- | +| 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. | **示例:** ```js -let mmsAcknowledgeInd = { - transactionId: "100", - version: sms.MmsVersionType.MMS_VERSION_1_0, - reportAllowed: sms.ReportType.MMS_YES +let tlsTwoWay = socket.constructTLSSocketInstance(); // Two way authentication +tlsTwoWay.bind({address: '192.168.xxx.xxx', port: 8080, family: 1}, err => { + if (err) { + console.log('bind fail'); + return; + } + console.log('bind success'); +}); +let options = { + ALPNProtocols: ["spdy/1", "http/1.1"], + address: { + address: "xxxx", + port: 8080, + family: 1, + }, + secureOptions: { + key: "xxxx", + cert: "xxxx", + ca: ["xxxx"], + password: "xxxx", + protocols: [socket.Protocol.TLSv12], + useRemoteCipherPrefer: true, + signatureAlgorithms: "rsa_pss_rsae_sha256:ECDSA+SHA256", + cipherSuite: "AES256-SHA256", + }, }; -let mmsInformation = { - messageType: sms.MessageType.TYPE_MMS_ACKNOWLEDGE_IND, - mmsType: mmsAcknowledgeInd +tlsTwoWay.connect(options).then(data => { + console.log(JSON.stringify(data)); +}).catch(err => { + console.error(err); +}); + +let tlsOneWay = socket.constructTLSSocketInstance(); // One way authentication +tlsOneWay.bind({address: '192.168.xxx.xxx', port: 8080, family: 1}, err => { + if (err) { + console.log('bind fail'); + return; + } + console.log('bind success'); +}); +let oneWayOptions = { + address: { + address: "192.168.xxx.xxx", + port: 8080, + family: 1, + }, + secureOptions: { + ca: ["xxxx","xxxx"], + cipherSuite: "AES256-SHA256", + }, }; -let promise = sms.encodeMms(mmsInformation); -promise.then(data => { - console.log(`encodeMms success, promise: data->${JSON.stringify(data)}`); +tlsOneWay.connect(oneWayOptions).then(data => { + console.log(JSON.stringify(data)); }).catch(err => { - console.error(`encodeMms failed, promise: err->${JSON.stringify(err)}`); + console.error(err); }); ``` -## ShortMessage +### getRemoteAddress9+ -短信实例。 +getRemoteAddress(callback: AsyncCallback\): void -**系统能力**:SystemCapability.Telephony.SmsMms +在TLSSocket通信连接成功之后,获取对端Socket地址。使用callback方式作为异步方法。 -| 名称 | 类型 | 必填 | 说明 | -| ------------------------ | --------------------------------------- | ---- | ------------------------------------------------------------ | -| hasReplyPath | boolean | 是 | 收到的短信是否包含“TP-Reply-Path”,默认为false。
“TP-Reply-Path”:设备根据发送SMS消息的短消息中心进行回复。 | -| isReplaceMessage | boolean | 是 | 收到的短信是否为“替换短信”,默认为false。
“替换短信”有关详细信息,参见 “3GPP TS 23.040 9.2.3.9”。 | -| isSmsStatusReportMessage | boolean | 是 | 当前消息是否为“短信状态报告”,默认为false。
“短信状态报告”是一种特定格式的短信,被用来从Service Center到Mobile Station传送状态报告。| -| messageClass | [ShortMessageClass](#shortmessageclass) | 是 | 短信类型。 | -| pdu | Array<number> | 是 | SMS消息中的协议数据单元 (PDU)。 | -| protocolId | number | 是 | 发送短信时使用的协议标识。 | -| scAddress | string | 是 | 短消息服务中心(SMSC)地址。 | -| scTimestamp | number | 是 | SMSC时间戳。 | -| status | number | 是 | SMS-STATUS-REPORT消息中的短信状态指示短信服务中心(SMSC)发送的短信状态。 | -| visibleMessageBody | string | 是 | 短信正文。 | -| visibleRawAddress | string | 是 | 发送者地址。 | +**系统能力**:SystemCapability.Communication.NetStack +**参数:** -## ShortMessageClass +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------------------------------------------------- | ---- | ---------- | +| callback | AsyncCallback\<[NetAddress](#netaddress)\> | 是 | 回调函数。成功返回对端的socket地址,失败返回错误码,错误信息。 | -短信类型。 +**错误码:** -**系统能力**:SystemCapability.Telephony.SmsMms +| 错误码ID | 错误信息 | +| ------- | ----------------------------- | +| 2303188 | Socket operation on non-socket.| +| 2300002 | System internal error. | -| 名称 | 值 | 说明 | -| ---------------- | ---- | ---------------------------------------- | -| UNKNOWN | 0 | 未知类型。 | -| INSTANT_MESSAGE | 1 | 即时消息,收到后立即显示。 | -| OPTIONAL_MESSAGE | 2 | 存储在设备或SIM卡上的短信。 | -| SIM_MESSAGE | 3 | 包含SIM卡信息的短信,需要存储在SIM卡中。 | -| FORWARD_MESSAGE | 4 | 要转发到另一台设备的短信。 | +**示例:** +```js +tls.getRemoteAddress((err, data) => { + if (err) { + console.log('getRemoteAddress fail'); + return; + } + console.log('getRemoteAddress success:' + JSON.stringify(data)); +}); +``` -## SendMessageOptions +### getRemoteAddress9+ -发送短信的参数和回调。根据SendMessageOptions中的可选参数content的值判断短信类型。 +getRemoteAddress(): Promise\ -**系统能力**:SystemCapability.Telephony.SmsMms +在TLSSocket通信连接成功之后,获取对端Socket地址。使用Promise方式作为异步方法。 -| 名称 | 类型 | 必填 | 说明 | -| ---------------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | -| slotId | number | 是 | 用于发送短信的SIM卡槽ID:
- 0:卡槽1
- 1:卡槽2 | -| destinationHost | string | 是 | 短信的发送地址。 | -| content | string \| Array<number> | 是 | 如果内容是字符串,则这是一条文本短信。如果内容是字节数组,则这是一条数据短信。 | -| serviceCenter | string | 否 | 短信中心地址。默认使用SIM卡中的短信中心地址。 | -| destinationPort | number | 否 | 如果发送数据消息,destinationPort 是必需的。否则是可选的。 | -| sendCallback | AsyncCallback<[ISendShortMessageCallback](#isendshortmessagecallback)> | 否 | 短信发送结果回调,返回短信发送的结果,参考[ISendShortMessageCallback](#isendshortmessagecallback)。 | -| deliveryCallback | AsyncCallback<[IDeliveryShortMessageCallback](#ideliveryshortmessagecallback)> | 否 | 短信送达结果回调,返回短信递送报告,参考[IDeliveryShortMessageCallback](#ideliveryshortmessagecallback)。 | +**系统能力**:SystemCapability.Communication.NetStack +**返回值:** -## ISendShortMessageCallback +| 类型 | 说明 | +| :------------------------------------------ | :------------------------------------------ | +| Promise\<[NetAddress](#netaddress)> | 以Promise形式返回获取对端socket地址的结果。失败返回错误码,错误信息。 | -回调实例。返回短信发送结果、存储已发送短信的URI和是否为长短信的最后一部分。 +**错误码:** -**系统能力**:SystemCapability.Telephony.SmsMms +| 错误码ID | 错误信息 | +| ------- | ------------------------------ | +| 2303188 | Socket operation on non-socket.| +| 2300002 | System internal error. | -| 名称 | 类型 | 必填 | 说明 | -| ---------- | ------------------------------- | ---- | ----------------------------------------------------------------------------------------- | -| isLastPart | boolean | 否 | 指定这是否是长短信的最后一部分。true表示这是长短信的最后一部分,false表示不是。默认为false。 | -| result | [SendSmsResult](#sendsmsresult) | 是 | 短信发送结果。 | -| url | string | 是 | 存储发送短信的URI。 | +**示例:** +```js +let promise = tls.getRemoteAddress(); +promise.then(() => { + console.log('getRemoteAddress success'); +}).catch(err => { + console.log('getRemoteAddress fail'); +}); +``` -## IDeliveryShortMessageCallback +### getCertificate9+ -回调实例,返回短信送达报告。 +getCertificate(callback: AsyncCallback\<[X509CertRawData](#x509certrawdata9)\>): void -**系统能力**:SystemCapability.Telephony.SmsMms +在TLSSocket通信连接成功之后,获取本地的数字证书,该接口只适用于双向认证时,使用callback方式作为异步方法。 -| 名称 | 类型 | 必填 | 说明 | -| ---- | ------------------- | ---- | -------------- | -| pdu | Array<number> | 是 | 短信送达报告。 | +**系统能力**:SystemCapability.Communication.NetStack +**参数:** -## SendSmsResult +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ----------------------------------------| ---- | ---------------| +| callback | AsyncCallback\<[X509CertRawData](#x509certrawdata9)\> | 是 | 回调函数,成功返回本地的证书,失败返回错误码,错误信息。| -短信发送结果。 +**错误码:** -**系统能力**:SystemCapability.Telephony.SmsMms +| 错误码ID | 错误信息 | +| ------- | ------------------------------ | +| 2303501 | SSL is null. | +| 2303504 | Error looking up x509. | +| 2300002 | System internal error. | -| 名称 | 值 | 说明 | -| ------------------------------------ | ---- | ------------------------------------------------------ | -| SEND_SMS_SUCCESS | 0 | 发送短信成功。 | -| SEND_SMS_FAILURE_UNKNOWN | 1 | 发送短信失败,原因未知。 | -| SEND_SMS_FAILURE_RADIO_OFF | 2 | 发送短信失败,原因为调制解调器关机。 | -| SEND_SMS_FAILURE_SERVICE_UNAVAILABLE | 3 | 发送短信失败,原因为网络不可用、不支持发送或接收短信。 | +**示例:** -## MmsInformation8+ +```js +tls.getCertificate((err, data) => { + if (err) { + console.log("getCertificate callback error = " + err); + } else { + console.log("getCertificate callback = " + data); + } +}); +``` -彩信信息。 +### getCertificate9+ -**系统接口:** 此接口为系统接口。 +getCertificate():Promise\<[X509CertRawData](#x509certrawdata9)\> -**系统能力**:SystemCapability.Telephony.SmsMms +在TLSSocket通信连接之后,获取本地的数字证书,该接口只适用于双向认证时,使用Promise方式作为异步方法。 -| 名称 | 类型 | 必填 | 说明 | -| ----------- | ------------------------------------------------------------ | ---- | ---------- | -| messageType | [MessageType](#messagetype8) | 是 | 消息类型。 | -| mmsType | [MmsSendReq](#mmssendreq8) \|[MmsSendConf](#mmssendconf8) \|[MmsNotificationInd](#mmsnotificationind8) \|[MmsRespInd](#mmsrespind8) \|[MmsRetrieveConf](#mmsretrieveconf8)\|[MmsAcknowledgeInd](#mmsacknowledgeind8)\|[MmsDeliveryInd](#mmsdeliveryind8)\|[MmsReadOrigInd](#mmsreadorigind8)\|[MmsReadRecInd](#mmsreadrecind8) | 是 | PDU头类型 | -| attachment | Array<[MmsAttachment](#mmsattachment8)\> | 否 | 附件 | +**系统能力**:SystemCapability.Communication.NetStack -## MmsSendReq8+ +**返回值:** -彩信发送请求。 +| 类型 | 说明 | +| -------------- | -------------------- | +| Promise\<[X509CertRawData](#x509certrawdata9)\> | 以Promise形式返回本地的数字证书的结果。失败返回错误码,错误信息。 | -**系统接口:** 此接口为系统接口。 +**错误码:** -**系统能力**:SystemCapability.Telephony.SmsMms +| 错误码ID | 错误信息 | +| ------- | ------------------------------ | +| 2303501 | SSL is null. | +| 2303504 | Error looking up x509. | +| 2300002 | System internal error. | -| 名称 | 类型 | 必填 | 说明 | -| ---------------- | ------------------------------------ | ---- | ------------ | -| from | [MmsAddress](#mmsaddress8) | 是 | 彩信来源 | -| transactionId | string | 是 | 事务ID | -| contentType | string | 是 | 内容类型 | -| version | [MmsVersionType](#mmsversiontype8) | 是 | 版本 | -| to | Array<[MmsAddress](#mmsaddress8)\> | 否 | 发送至 | -| date | number | 否 | 日期 | -| cc | Array<[MmsAddress](#mmsaddress8)\> | 否 | 抄送 | -| bcc | Array<[MmsAddress](#mmsaddress8)\> | 否 | 暗抄送 | -| subject | string | 否 | 主题 | -| messageClass | number | 否 | 消息类 | -| expiry | number | 否 | 到期 | -| priority | [MmsPriorityType](#mmsprioritytype8) | 否 | 优先 | -| senderVisibility | number | 否 | 发件人可见性 | -| deliveryReport | number | 否 | 交付报告 | -| readReport | number | 否 | 阅读报告 | +**示例:** -## MmsSendConf8+ +```js +tls.getCertificate().then(data => { + console.log(data); +}).catch(err => { + console.error(err); +}); +``` -彩信发送配置。 +### getRemoteCertificate9+ -**系统接口:** 此接口为系统接口。 +getRemoteCertificate(callback: AsyncCallback\<[X509CertRawData](#x509certrawdata9)\>): void -**系统能力**:SystemCapability.Telephony.SmsMms +在TLSSocket通信连接成功之后,获取服务端的数字证书,使用callback方式作为异步方法。 -| 名称 | 类型 | 必填 | 说明 | -| ------------- | ---------------------------------- | ---- | -------- | -| responseState | number | 是 | 响应状态 | -| transactionId | string | 是 | 事务ID | -| version | [MmsVersionType](#mmsversiontype8) | 是 | 版本 | -| messageId | string | 否 | 消息ID | +**系统能力**:SystemCapability.Communication.NetStack -## MmsNotificationInd8+ +**参数:** -彩信通知索引。 +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ----------------------------------------| ---- | ---------------| +| callback | AsyncCallback\<[X509CertRawData](#x509certrawdata9)\> | 是 | 回调函数,返回服务端的证书。失败返回错误码,错误信息。 | -**系统接口:** 此接口为系统接口。 +**错误码:** -**系统能力**:SystemCapability.Telephony.SmsMms +| 错误码ID | 错误信息 | +| ------- | ------------------------------ | +| 2303501 | SSL is null. | +| 2300002 | System internal error. | -| 名称 | 类型 | 必填 | 说明 | -| --------------- | ---------------------------------- | ---- | -------- | -| transactionId | string | 是 | 事务ID | -| messageClass | number | 是 | 消息类 | -| messageSize | number | 是 | 消息大小 | -| expiry | number | 是 | 到期 | -| contentLocation | string | 是 | 内容位置 | -| version | [MmsVersionType](#mmsversiontype8) | 是 | 版本 | -| from | [MmsAddress](#mmsaddress8) | 否 | 来源 | -| subject | string | 否 | 主题 | -| deliveryReport | number | 否 | 状态报告 | -| contentClass | number | 否 | 内容类 | +**示例:** -## MmsAcknowledgeInd8+ +```js +tls.getRemoteCertificate((err, data) => { + if (err) { + console.log("getRemoteCertificate callback error = " + err); + } else { + console.log("getRemoteCertificate callback = " + data); + } +}); +``` -彩信确认索引。 +### getRemoteCertificate9+ -**系统接口:** 此接口为系统接口。 +getRemoteCertificate():Promise\<[X509CertRawData](#x509certrawdata9)\> -**系统能力**:SystemCapability.Telephony.SmsMms +在TLSSocket通信连接成功之后,获取服务端的数字证书,使用Promise方式作为异步方法。 -| 名称 | 类型 | 必填 | 说明 | -| ------------- | ---------------------------------- | ---- | -------- | -| transactionId | string | 是 | 事务ID | -| version | [MmsVersionType](#mmsversiontype8) | 是 | 版本 | -| reportAllowed | [ReportType](#reporttype8) | 否 | 允许报告 | +**系统能力**:SystemCapability.Communication.NetStack -## MmsRetrieveConf8+ +**返回值:** -彩信检索配置。 +| 类型 | 说明 | +| -------------- | -------------------- | +| Promise\<[X509CertRawData](#x509certrawdata9)\> | 以Promise形式返回服务端的数字证书的结果。失败返回错误码,错误信息。 | -**系统接口:** 此接口为系统接口。 +**错误码:** -**系统能力**:SystemCapability.Telephony.SmsMms +| 错误码ID | 错误信息 | +| ------- | ------------------------------ | +| 2303501 | SSL is null. | +| 2300002 | System internal error. | -| 名称 | 类型 | 必填 | 说明 | -| -------------- | ------------------------------------ | ---- | -------- | -| transactionId | string | 是 | 事务ID | -| messageId | string | 是 | 消息ID | -| date | number | 是 | 日期 | -| contentType | string | 是 | 内容类型 | -| to | Array<[MmsAddress](#mmsaddress8)\> | 是 | 发送至 | -| version | [MmsVersionType](#mmsversiontype8) | 是 | 版本 | -| from | [MmsAddress](#mmsaddress8) | 否 | 来源 | -| cc | Array<[MmsAddress](#mmsaddress8)\> | 否 | 抄送 | -| subject | string | 否 | 主题 | -| priority | [MmsPriorityType](#mmsprioritytype8) | 否 | 优先级 | -| deliveryReport | number | 否 | 状态报告 | -| readReport | number | 否 | 阅读报告 | -| retrieveStatus | number | 否 | 检索状态 | -| retrieveText | string | 否 | 检索文本 | +**示例:** -## MmsReadOrigInd8+ +```js +tls.getRemoteCertificate().then(data => { + console.log(data); +}).catch(err => { + console.error(err); +}); +``` -彩信读取原始索引。 +### getProtocol9+ -**系统接口:** 此接口为系统接口。 +getProtocol(callback: AsyncCallback\): void -**系统能力**:SystemCapability.Telephony.SmsMms +在TLSSocket通信连接成功之后,获取通信的协议版本,使用callback方式作为异步方法。 -| 名称 | 类型 | 必填 | 说明 | -| ---------- | ---------------------------------- | ---- | -------- | -| version | [MmsVersionType](#mmsversiontype8) | 是 | 版本 | -| messageId | string | 是 | 消息ID | -| to | Array<[MmsAddress](#mmsaddress8)\> | 是 | 发送至 | -| from | [MmsAddress](#mmsaddress8) | 是 | 来源 | -| date | number | 是 | 日期 | -| readStatus | number | 是 | 阅读状态 | +**系统能力**:SystemCapability.Communication.NetStack -## MmsReadRecInd8+ +**参数:** -彩信读取记录索引。 +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ----------------------------------------| ---- | ---------------| +| callback | AsyncCallback\ | 是 | 回调函数,返回通信的协议。失败返回错误码,错误信息。| -**系统接口:** 此接口为系统接口。 +**错误码:** -**系统能力**:SystemCapability.Telephony.SmsMms +| 错误码ID | 错误信息 | +| ------- | ----------------------------- | +| 2303501 | SSL is null. | +| 2303505 | Error occurred in the tls system call. | +| 2300002 | System internal error. | -| 名称 | 类型 | 必填 | 说明 | -| ---------- | ---------------------------------- | ---- | -------- | -| version | [MmsVersionType](#mmsversiontype8) | 是 | 版本 | -| messageId | string | 是 | 消息ID | -| to | Array<[MmsAddress](#mmsaddress8)\> | 是 | 发送至 | -| from | [MmsAddress](#mmsaddress8) | 是 | 来源 | -| readStatus | number | 是 | 阅读状态 | -| date | number | 否 | 日期 | +**示例:** -## MmsAttachment8+ +```js +tls.getProtocol((err, data) => { + if (err) { + console.log("getProtocol callback error = " + err); + } else { + console.log("getProtocol callback = " + data); + } +}); +``` -彩信附件。 +### getProtocol9+ -**系统接口:** 此接口为系统接口。 +getProtocol():Promise\ -**系统能力**:SystemCapability.Telephony.SmsMms +在TLSSocket通信连接成功之后,获取通信的协议版本,使用Promise方式作为异步方法。 -| 名称 | 类型 | 必填 | 说明 | -| ----------------------- | ------------------------------------ | ---- | ------------------ | -| contentId | string | 是 | 内容ID | -| contentLocation | string | 是 | 内容位置 | -| contentDisposition | [DispositionType](#dispositiontype8) | 是 | 内容处理 | -| contentTransferEncoding | string | 是 | 内容传输编码 | -| contentType | string | 是 | 内容类型 | -| isSmil | boolean | 是 | 同步多媒体集成语言 | -| path | string | 否 | 路径 | -| inBuff | Array | 否 | 缓冲区中 | -| fileName | string | 否 | 文件名 | -| charset | [MmsCharSets](#mmscharsets8) | 否 | 字符集 | +**系统能力**:SystemCapability.Communication.NetStack -## MmsAddress8+ +**返回值:** -彩信地址。 +| 类型 | 说明 | +| -------------- | -------------------- | +| Promise\ | 以Promise形式返回通信的协议。失败返回错误码,错误信息。 | -**系统接口:** 此接口为系统接口。 +**错误码:** -**系统能力**:SystemCapability.Telephony.SmsMms +| 错误码ID | 错误信息 | +| ------- | ------------------------------ | +| 2303501 | SSL is null. | +| 2303505 | Error occurred in the tls system call. | +| 2300002 | System internal error. | -| 名称 | 类型 | 必填 | 说明 | -| ------- | ---------------------------- | ---- | ------ | -| address | string | 是 | 地址 | -| charset | [MmsCharSets](#mmscharsets8) | 是 | 字符集 | +**示例:** -## MessageType8+ +```js +tls.getProtocol().then(data => { + console.log(data); +}).catch(err => { + console.error(err); +}); +``` -消息类型。 +### getCipherSuite9+ -**系统接口:** 此接口为系统接口。 +getCipherSuite(callback: AsyncCallback\\>): void -**系统能力**:SystemCapability.Telephony.SmsMms +在TLSSocket通信连接成功之后,获取通信双方协商后的加密套件,使用callback方式作为异步方法。 -| 名称 | 值 | 说明 | -| ------------------------- | ---- | -------------------- | -| TYPE_MMS_SEND_REQ | 128 | 彩信发送请求类型 | -| TYPE_MMS_SEND_CONF | 129 | 彩信发送配置类型 | -| TYPE_MMS_NOTIFICATION_IND | 130 | 彩信通知索引类型 | -| TYPE_MMS_RESP_IND | 131 | 彩信回复索引类型 | -| TYPE_MMS_RETRIEVE_CONF | 132 | 彩信检索配置类型 | -| TYPE_MMS_ACKNOWLEDGE_IND | 133 | 彩信确认索引类型 | -| TYPE_MMS_DELIVERY_IND | 134 | 彩信传送索引类型 | -| TYPE_MMS_READ_REC_IND | 135 | 彩信读取接收索引类型 | -| TYPE_MMS_READ_ORIG_IND | 136 | 彩信读取原始索引类型 | +**系统能力**:SystemCapability.Communication.NetStack -## MmsPriorityType8+ +**参数:** -彩信优先级类型。 +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ----------------------------------------| ---- | ---------------| +| callback | AsyncCallback\\> | 是 | 回调函数,返回通信双方支持的加密套件。 失败返回错误码,错误信息。 | -**系统接口:** 此接口为系统接口。 +**错误码:** -**系统能力**:SystemCapability.Telephony.SmsMms +| 错误码ID | 错误信息 | +| ------- | ------------------------------ | +| 2303501 | SSL is null. | +| 2303502 | Error in tls reading. | +| 2303505 | Error occurred in the tls system call. | +| 2300002 | System internal error. | -| 名称 | 值 | 说明 | -| ---------- | ---- | -------------- | -| MMS_LOW | 128 | 彩信优先级低 | -| MMS_NORMAL | 129 | 彩信优先级正常 | -| MMS_HIGH | 130 | 彩信优先级高 | +**示例:** -## MmsVersionType8+ +```js +tls.getCipherSuite((err, data) => { + if (err) { + console.log("getCipherSuite callback error = " + err); + } else { + console.log("getCipherSuite callback = " + data); + } +}); +``` -彩信版本类型。 +### getCipherSuite9+ -**系统接口:** 此接口为系统接口。 +getCipherSuite(): Promise\\> -**系统能力**:SystemCapability.Telephony.SmsMms +在TLSSocket通信连接成功之后,获取通信双方协商后的加密套件,使用Promise方式作为异步方法。 -| 名称 | 值 | 说明 | -| --------------- | ---- | ----------- | -| MMS_VERSION_1_0 | 0x10 | 彩信版本1_0 | -| MMS_VERSION_1_1 | 0x11 | 彩信版本1_1 | -| MMS_VERSION_1_2 | 0x12 | 彩信版本1_2 | -| MMS_VERSION_1_3 | 0x13 | 彩信版本1_3 | +**系统能力**:SystemCapability.Communication.NetStack -## MmsCharSets8+ +**返回值:** -彩信字符集。 +| 类型 | 说明 | +| ---------------------- | --------------------- | +| Promise\\> | 以Promise形式返回通信双方支持的加密套件。失败返回错误码,错误信息。 | -**系统接口:** 此接口为系统接口。 +**错误码:** -**系统能力**:SystemCapability.Telephony.SmsMms +| 错误码ID | 错误信息 | +| ------- | ------------------------------ | +| 2303501 | SSL is null. | +| 2303502 | Error in tls reading. | +| 2303505 | Error occurred in the tls system call. | +| 2300002 | System internal error. | -| 名称 | 值 | 说明 | -| --------------- | ------ | ------------------- | -| BIG5 | 0X07EA | BIG5格式 | -| ISO_10646_UCS_2 | 0X03E8 | ISO_10646_UCS_2格式 | -| ISO_8859_1 | 0X04 | ISO_8859_1格式 | -| ISO_8859_2 | 0X05 | ISO_8859_2格式 | -| ISO_8859_3 | 0X06 | ISO_8859_3格式 | -| ISO_8859_4 | 0X07 | ISO_8859_4格式 | -| ISO_8859_5 | 0X08 | ISO_8859_5格式 | -| ISO_8859_6 | 0X09 | ISO_8859_6格式 | -| ISO_8859_7 | 0X0A | ISO_8859_7格式 | -| ISO_8859_8 | 0X0B | ISO_8859_8格式 | -| ISO_8859_9 | 0X0C | ISO_8859_9格式 | -| SHIFT_JIS | 0X11 | SHIFT_JIS格式 | -| US_ASCII | 0X03 | US_ASCII格式 | -| UTF_8 | 0X6A | UTF_8格式 | +**示例:** -## DispositionType8+ +```js +tls.getCipherSuite().then(data => { + console.log('getCipherSuite success:' + JSON.stringify(data)); +}).catch(err => { + console.error(err); +}); +``` -处理类型。 +### getSignatureAlgorithms9+ -**系统接口:** 此接口为系统接口。 +getSignatureAlgorithms(callback: AsyncCallback\\>): void -**系统能力**:SystemCapability.Telephony.SmsMms +在TLSSocket通信连接成功之后,获取通信双方协商后签名算法,该接口只适配双向认证模式下,使用callback方式作为异步方法。 -| 名称 | 值 | 说明 | -| ---------- | ---- | -------- | -| FROM_DATA | 0 | 数据来源 | -| ATTACHMENT | 1 | 附件 | -| INLINE | 2 | 内联 | +**系统能力**:SystemCapability.Communication.NetStack -## ReportType8+ +**参数:** -报告类型。 +| 参数名 | 类型 | 必填 | 说明 | +| -------- | -------------------------------------| ---- | ---------------| +| callback | AsyncCallback\\> | 是 | 回调函数,返回双方支持的签名算法。 | -**系统接口:** 此接口为系统接口。 +**错误码:** + +| 错误码ID | 错误信息 | +| ------- | ------------------------------ | +| 2303501 | SSL is null. | +| 2300002 | System internal error. | + +**示例:** + +```js +tls.getSignatureAlgorithms((err, data) => { + if (err) { + console.log("getSignatureAlgorithms callback error = " + err); + } else { + console.log("getSignatureAlgorithms callback = " + data); + } +}); +``` + +### getSignatureAlgorithms9+ + +getSignatureAlgorithms(): Promise\\> + +在TLSSocket通信连接成功之后,获取通信双方协商后的签名算法,该接口只适配双向认证模式下,使用Promise方式作为异步方法。 + +**系统能力**:SystemCapability.Communication.NetStack + +**返回值:** + +| 类型 | 说明 | +| ---------------------- | -------------------- | +| Promise\\> | 以Promise形式返回获取到的双方支持的签名算法。 | + +**错误码:** + +| 错误码ID | 错误信息 | +| ------- | ------------------------------ | +| 2303501 | SSL is null. | +| 2300002 | System internal error. | + +**示例:** + +```js +tls.getSignatureAlgorithms().then(data => { + console.log("getSignatureAlgorithms success" + data); +}).catch(err => { + console.error(err); +}); +``` + +### send9+ + +send(data: string, callback: AsyncCallback\): void + +在TLSSocket通信连接成功之后,向服务端发送消息,使用callback方式作为异步方法。 + +**系统能力**:SystemCapability.Communication.NetStack -**系统能力**:SystemCapability.Telephony.SmsMms +**参数:** -| 名称 | 值 | 说明 | -| ------- | ---- | ---- | -| MMS_YES | 128 | YES | -| MMS_NO | 129 | NO | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | -----------------------------| ---- | ---------------| +| data | string | 是 | 发送的数据内容。 | +| callback | AsyncCallback\ | 是 | 回调函数,返回TLSSocket发送数据的结果。失败返回错误码,错误信息。 | -## CBConfigOptions7+ +**错误码:** -小区广播配置选项。 +| 错误码ID | 错误信息 | +| ------- | -------------------------------------------- | +| 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. | -**系统接口:** 此接口为系统接口。 +**示例:** -**系统能力**:SystemCapability.Telephony.SmsMms +```js +tls.send("xxxx", (err) => { + if (err) { + console.log("send callback error = " + err); + } else { + console.log("send success"); + } +}); +``` -| 名称 | 类型 | 必填 | 说明 | -| -------------- | -------------------- | ---- | ------------ | -| slotId | number | 是 | 卡槽ID | -| enable | boolean | 是 | 可行 | -| startMessageId | number | 是 | 消息起始ID | -| endMessageId | number | 是 | 消息结束ID | -| ranType | [RanType](#rantype7) | 是 | 设备网络制式 | +### send9+ -## SimMessageStatus7+ +send(data: string): Promise\ -SIM卡消息状态。 +在TLSSocket通信连接成功之后,向服务端发送消息,使用Promise方式作为异步方法。 -**系统接口:** 此接口为系统接口。 +**系统能力**:SystemCapability.Communication.NetStack -**系统能力**:SystemCapability.Telephony.SmsMms +**参数:** -| 名称 | 值 | 说明 | -| ------------------------- | ---- | --------------------------- | -| SIM_MESSAGE_STATUS_FREE | 0 | SIM卡上的状态可用空间 | -| SIM_MESSAGE_STATUS_READ | 1 | 消息已读状态 | -| SIM_MESSAGE_STATUS_UNREAD | 3 | 消息未读状态 | -| SIM_MESSAGE_STATUS_SENT | 5 | 存储发送消息(仅适用于SMS) | -| SIM_MESSAGE_STATUS_UNSENT | 7 | 储未发送消息(仅适用于SMS) | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | -----------------------------| ---- | ---------------| +| data | string | 是 | 发送的数据内容。 | -## RanType7+ +**错误码:** -设备网络制式。 +| 错误码ID | 错误信息 | +| ------- | -------------------------------------------- | +| 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. | -**系统接口:** 此接口为系统接口。 +**返回值:** -**系统能力**:SystemCapability.Telephony.SmsMms +| 类型 | 说明 | +| -------------- | -------------------- | +| Promise\ | 以Promise形式返回,返回TLSSocket发送数据的结果。失败返回错误码,错误信息。 | -| 名称 | 值 | 说明 | -| --------- | ---- | ---- | -| TYPE_GSM | 1 | GSM | -| TYPE_CDMA | 2 | CMDA | +**示例:** -## SmsEncodingScheme8+ +```js +tls.send("xxxx").then(() =>{ + console.log("send success"); +}).catch(err => { + console.error(err); +}); +``` -短信编码方案。 +### close9+ -**系统接口:** 此接口为系统接口。 +close(callback: AsyncCallback\): void -**系统能力**:SystemCapability.Telephony.SmsMms +在TLSSocket通信连接成功之后,断开连接,使用callback方式作为异步方法。 -| 名称 | 值 | 说明 | -| -------------------- | ---- | ------------ | -| SMS_ENCODING_UNKNOWN | 0 | 未知短信编码 | -| SMS_ENCODING_7BIT | 1 | 7位短信编码 | -| SMS_ENCODING_8BIT | 2 | 8位短信编码 | -| SMS_ENCODING_16BIT | 3 | 16位短信编码 | +**系统能力**:SystemCapability.Communication.NetStack -## SimMessageOptions7+ +**参数:** -SIM卡消息选项。 +| 参数名 | 类型 | 必填 | 说明 | +| -------- | -----------------------------| ---- | ---------------| +| callback | AsyncCallback\ | 是 | 回调函数,成功返回TLSSocket关闭连接的结果。 失败返回错误码,错误信息。 | -**系统接口:** 此接口为系统接口。 +**错误码:** + +| 错误码ID | 错误信息 | +| ------- | -------------------------------------------- | +| 2303501 | SSL is null. | +| 2303505 | Error occurred in the tls system call. | +| 2303506 | Error clearing tls connection. | +| 2300002 | System internal error. | + +**示例:** -**系统能力**:SystemCapability.Telephony.SmsMms +```js +tls.close((err) => { + if (err) { + console.log("close callback error = " + err); + } else { + console.log("close success"); + } +}); +``` -| 名称 | 类型 | 必填 | 说明 | -| ------ | -------------------------------------- | ---- | -------------- | -| slotId | number | 是 | 卡槽ID | -| smsc | string | 是 | 短消息业务中心 | -| pdu | string | 是 | 协议数据单元 | -| status | [SimMessageStatus](#simmessagestatus7) | 是 | 状态 | +### close9+ -## UpdateSimMessageOptions7+ +close(): Promise\ -更新SIM卡消息选项。 +在TLSSocket通信连接成功之后,断开连接,使用Promise方式作为异步方法。 -**系统接口:** 此接口为系统接口。 +**系统能力**:SystemCapability.Communication.NetStack -**系统能力**:SystemCapability.Telephony.SmsMms +**返回值:** -| 名称 | 类型 | 必填 | 说明 | -| --------- | -------------------------------------- | ---- | -------------- | -| slotId | number | 是 | 卡槽ID | -| msgIndex | number | 是 | 消息索引 | -| newStatus | [SimMessageStatus](#simmessagestatus7) | 是 | 新状态 | -| pdu | string | 是 | 协议数据单元 | -| smsc | string | 是 | 短消息业务中心 | +| 类型 | 说明 | +| -------------- | -------------------- | +| Promise\ | 以Promise形式返回,返回TLSSocket关闭连接的结果。失败返回错误码,错误信息。 | -## SimShortMessage7+ +**错误码:** -SIM卡短消息。 +| 错误码ID | 错误信息 | +| ------- | -------------------------------------------- | +| 2303501 | SSL is null. | +| 2303505 | Error occurred in the tls system call. | +| 2303506 | Error clearing tls connection. | +| 2300002 | System internal error. | -**系统接口:** 此接口为系统接口。 +**示例:** -**系统能力**:SystemCapability.Telephony.SmsMms +```js +tls.close().then(() =>{ + console.log("close success"); +}).catch(err => { + console.error(err); +}); +``` -| 名称 | 类型 | 必填 | 说明 | -| ---------------- | -------------------------------------- | ---- | ------------- | -| shortMessage | [ShortMessage](#shortmessage) | 是 | 短消息 | -| simMessageStatus | [SimMessageStatus](#simmessagestatus7) | 是 | SIM卡消息状态 | -| indexOnSim | number | 是 | SIM卡索引 | +## TLSConnectOptions9+ -## MmsDeliveryInd8+ +TLS连接的操作。 -彩信发送标识。 +**系统能力**:SystemCapability.Communication.NetStack -**系统接口:** 此接口为系统接口。 +| 名称 | 类型 | 必填 | 说明 | +| -------------- | ------------------------------------- | --- |-------------- | +| address | [NetAddress](#netaddress) | 是 | 网关地址。 | +| secureOptions | [TLSSecureOptions](#tlssecureoptions9) | 是 | TLS安全相关操作。| +| ALPNProtocols | Array\ | 否 | ALPN协议。 | -**系统能力**:SystemCapability.Telephony.SmsMms +## TLSSecureOptions9+ -| 名称 | 类型 | 必填 | 说明 | -| --------- | ---------------------------------- | ---- | ------ | -| messageId | string | 是 | 消息ID | -| date | number | 是 | 日期 | -| to | Array<[MmsAddress](#mmsaddress8)\> | 是 | 发送至 | -| status | number | 是 | 状态 | -| version | [MmsVersionType](#mmsversiontype8) | 是 | 版本 | +TLS安全相关操作,其中ca证书为必选参数,其他参数为可选参数。当本地证书cert和私钥key不为空时,开启双向验证模式。cert和key其中一项为空时,开启单向验证模式。 -## MmsRespInd8+ +**系统能力**:SystemCapability.Communication.NetStack -彩信回复标志。 +| 名称 | 类型 | 必填 | 说明 | +| --------------------- | ------------------------------------------------------ | --- |----------------------------------- | +| ca | string \| Array\ | 是 | 服务端的ca证书,用于认证校验服务端的数字证书。| +| cert | string | 否 | 本地客户端的数字证书。 | +| key | string | 否 | 本地数字证书的私钥。 | +| password | string | 否 | 读取私钥的密码。 | +| protocols | [Protocol](#protocol9) \|Array\<[Protocol](#protocol9)\> | 否 | TLS的协议版本。 | +| useRemoteCipherPrefer | boolean | 否 | 优先使用对等方的密码套件。 | +| signatureAlgorithms | string | 否 | 通信过程中的签名算法。 | +| cipherSuite | string | 否 | 通信过程中的加密套件。 | -**系统接口:** 此接口为系统接口。 +## Protocol9+ -**系统能力**:SystemCapability.Telephony.SmsMms +TLS通信的协议版本。 -| 名称 | 类型 | 必填 | 说明 | -| ------------- | ---------------------------------- | ---- | -------- | -| transactionId | string | 是 | 事件ID | -| status | number | 是 | 状态 | -| version | [MmsVersionType](#mmsversiontype8) | 是 | 版本 | -| reportAllowed | [ReportType](#reporttype8) | 否 | 允许报告 | +**系统能力**:SystemCapability.Communication.NetStack -## SmsSegmentsInfo8+ +| 名称 | 值 | 说明 | +| --------- | --------- |------------------ | +| TLSv12 | "TLSv1.2" | 使用TLSv1.2协议通信。 | +| TLSv13 | "TLSv1.3" | 使用TLSv1.3协议通信。 | -短信段信息。 +## X509CertRawData9+ -**系统接口:** 此接口为系统接口。 +存储证书的数据。 -**系统能力**:SystemCapability.Telephony.SmsMms +**系统能力**:SystemCapability.Communication.NetStack -| 名称 | 类型 | 必填 | 说明 | -| -------------------- | ---------------------------------------- | ---- | ------------ | -| splitCount | number | 是 | 拆分计数 | -| encodeCount | number | 是 | 编码计数 | -| encodeCountRemaining | number | 是 | 剩余编码计数 | -| scheme | [SmsEncodingScheme](#smsencodingscheme8) | 是 | 短信编码方案 | +| 类型 | 说明 | +| --------------------------------------------------------------------- | --------------------- | +|[cryptoFramework.EncodingBlob](js-apis-cryptoFramework.md#datablob) | 存储证书的数据和编码格式 |