本模塊提供利用Socket進行數(shù)據(jù)傳輸?shù)哪芰?,支持TCPSocket、UDPSocket、WebSocket和TLSSocket。
本模塊首批接口從API version 7開始支持。后續(xù)版本的新增接口,采用上角標單獨標記接口的起始版本。
constructUDPSocketInstance(): UDPSocket
創(chuàng)建一個UDPSocket對象。
系統(tǒng)能力:SystemCapability.Communication.NetStack
返回值:
類型 | 說明 |
---|---|
返回一個UDPSocket對象。 |
示例:
- let udp = socket.constructUDPSocketInstance();
UDPSocket連接。在調(diào)用UDPSocket的方法前,需要先通過socket.constructUDPSocketInstance創(chuàng)建UDPSocket對象。
bind(address: NetAddress, callback: AsyncCallback<void>): void
綁定IP地址和端口,端口可以指定或由系統(tǒng)隨機分配。使用callback方式作為異步方法。
客戶端使用該方法創(chuàng)建socket。
需要權(quán)限:ohos.permission.INTERNET
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
address | 是 | 目標地址信息,參考NetAddress。 | |
callback | AsyncCallback<void> | 是 | 回調(diào)函數(shù)。 |
錯誤碼:
錯誤碼ID | 錯誤信息 |
---|---|
401 | Parameter error. |
201 | Permission denied. |
示例:
- 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');
- })
bind(address: NetAddress): Promise<void>
綁定IP地址和端口,端口可以指定或由系統(tǒng)隨機分配。使用Promise方式作為異步方法。
客戶端使用該方法創(chuàng)建socket。
需要權(quán)限:ohos.permission.INTERNET
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
address | 是 | 目標地址信息,參考NetAddress。 |
錯誤碼:
錯誤碼ID | 錯誤信息 |
---|---|
401 | Parameter error. |
201 | Permission denied. |
返回值:
類型 | 說明 |
---|---|
Promise<void> | 以Promise形式異步返回UDPSocket綁定的結(jié)果。 |
示例:
- 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.log('bind fail');
- });
send(options: UDPSendOptions, callback: AsyncCallback<void>): void
通過UDPSocket連接發(fā)送數(shù)據(jù)。使用callback方式作為異步方法。
發(fā)送數(shù)據(jù)前,需要先調(diào)用UDPSocket.bind()綁定IP地址和端口。
需要權(quán)限:ohos.permission.INTERNET
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
options | 是 | UDPSocket發(fā)送參數(shù),參考UDPSendOptions。 | |
callback | AsyncCallback<void> | 是 | 回調(diào)函數(shù)。 |
錯誤碼:
錯誤碼ID | 錯誤信息 |
---|---|
401 | Parameter error. |
201 | Permission denied. |
示例:
- 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');
- })
send(options: UDPSendOptions): Promise<void>
通過UDPSocket連接發(fā)送數(shù)據(jù)。使用Promise方式作為異步方法。
發(fā)送數(shù)據(jù)前,需要先調(diào)用UDPSocket.bind()綁定IP地址和端口。
需要權(quán)限:ohos.permission.INTERNET
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
options | 是 | UDPSocket發(fā)送參數(shù),參考UDPSendOptions。 |
錯誤碼:
錯誤碼ID | 錯誤信息 |
---|---|
401 | Parameter error. |
201 | Permission denied. |
返回值:
類型 | 說明 |
---|---|
Promise<void> | 以Promise形式返回UDPSocket連接發(fā)送數(shù)據(jù)的結(jié)果。 |
示例:
- 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');
- });
close(callback: AsyncCallback<void>): void
關(guān)閉UDPSocket連接。使用callback方式作為異步方法。
需要權(quán)限:ohos.permission.INTERNET
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
callback | AsyncCallback<void> | 是 | 回調(diào)函數(shù)。 |
示例:
- let udp = socket.constructUDPSocketInstance();
- udp.close(err => {
- if (err) {
- console.log('close fail');
- return;
- }
- console.log('close success');
- })
close(): Promise<void>
關(guān)閉UDPSocket連接。使用Promise方式作為異步方法。
需要權(quán)限:ohos.permission.INTERNET
系統(tǒng)能力:SystemCapability.Communication.NetStack
返回值:
類型 | 說明 |
---|---|
Promise<void> | 以Promise形式返回關(guān)閉UDPSocket連接的結(jié)果。 |
示例:
- let udp = socket.constructUDPSocketInstance();
- let promise = udp.close();
- promise.then(() => {
- console.log('close success');
- }).catch(err => {
- console.log('close fail');
- });
getState(callback: AsyncCallback<SocketStateBase>): void
獲取UDPSocket狀態(tài)。使用callback方式作為異步方法。
bind方法調(diào)用成功后,才可調(diào)用此方法。
需要權(quán)限:ohos.permission.INTERNET
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
callback | AsyncCallback<SocketStateBase> | 是 | 回調(diào)函數(shù)。 |
錯誤碼:
錯誤碼ID | 錯誤信息 |
---|---|
201 | Permission denied. |
示例:
- 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));
- })
- })
getState(): Promise<SocketStateBase>
獲取UDPSocket狀態(tài)。使用Promise方式作為異步方法。
bind方法調(diào)用成功后,才可調(diào)用此方法。
需要權(quán)限:ohos.permission.INTERNET
系統(tǒng)能力:SystemCapability.Communication.NetStack
返回值:
類型 | 說明 |
---|---|
Promise<SocketStateBase> | 以Promise形式返回獲取UDPSocket狀態(tài)的結(jié)果。 |
示例:
- 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');
- });
- })
setExtraOptions(options: UDPExtraOptions, callback: AsyncCallback<void>): void
設(shè)置UDPSocket連接的其他屬性。使用callback方式作為異步方法。
bind方法調(diào)用成功后,才可調(diào)用此方法。
需要權(quán)限:ohos.permission.INTERNET
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
options | 是 | UDPSocket連接的其他屬性,參考UDPExtraOptions。 | |
callback | AsyncCallback<void> | 是 | 回調(diào)函數(shù)。 |
錯誤碼:
錯誤碼ID | 錯誤信息 |
---|---|
401 | Parameter error. |
201 | Permission denied. |
示例:
- 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');
- })
- })
setExtraOptions(options: UDPExtraOptions): Promise<void>
設(shè)置UDPSocket連接的其他屬性。使用Promise方式作為異步方法。
bind方法調(diào)用成功后,才可調(diào)用此方法。
需要權(quán)限:ohos.permission.INTERNET
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
options | 是 | UDPSocket連接的其他屬性,參考UDPExtraOptions。 |
返回值:
類型 | 說明 |
---|---|
Promise<void> | 以Promise形式返回設(shè)置UDPSocket連接的其他屬性的結(jié)果。 |
錯誤碼:
錯誤碼ID | 錯誤信息 |
---|---|
401 | Parameter error. |
201 | Permission denied. |
示例:
- 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.log('bind fail');
- });
on(type: 'message', callback: Callback<{message: ArrayBuffer, remoteInfo: SocketRemoteInfo}>): void
訂閱UDPSocket連接的接收消息事件。使用callback方式作為異步方法。
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
type | string | 是 | 訂閱的事件類型。'message':接收消息事件。 |
callback | Callback<{message: ArrayBuffer, remoteInfo: SocketRemoteInfo}> | 是 | 回調(diào)函數(shù)。 |
示例:
- let udp = socket.constructUDPSocketInstance();
- udp.on('message', value => {
- console.log("on message, message:" + value.message + ", remoteInfo:" + value.remoteInfo);
- });
off(type: 'message', callback?: Callback<{message: ArrayBuffer, remoteInfo: SocketRemoteInfo}>): void
取消訂閱UDPSocket連接的接收消息事件。使用callback方式作為異步方法。
可以指定傳入on中的callback取消一個訂閱,也可以不指定callback清空所有訂閱。
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
type | string | 是 | 訂閱的事件類型。'message':接收消息事件。 |
callback | Callback<{message: ArrayBuffer, remoteInfo: SocketRemoteInfo}> | 否 | 回調(diào)函數(shù)。 |
示例:
- 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');
on(type: 'listening' | 'close', callback: Callback<void>): void
訂閱UDPSocket連接的數(shù)據(jù)包消息事件或關(guān)閉事件。使用callback方式作為異步方法。
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
type | string | 是 | 訂閱的事件類型。 - 'listening':數(shù)據(jù)包消息事件。 - 'close':關(guān)閉事件。 |
callback | Callback<void> | 是 | 回調(diào)函數(shù)。 |
示例:
- let udp = socket.constructUDPSocketInstance();
- udp.on('listening', () => {
- console.log("on listening success");
- });
- udp.on('close', () => {
- console.log("on close success" );
- });
off(type: 'listening' | 'close', callback?: Callback<void>): void
取消訂閱UDPSocket連接的數(shù)據(jù)包消息事件或關(guān)閉事件。使用callback方式作為異步方法。
可以指定傳入on中的callback取消一個訂閱,也可以不指定callback清空所有訂閱。
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
type | string | 是 | 訂閱事件類型。 - 'listening':數(shù)據(jù)包消息事件。 - 'close':關(guān)閉事件。 |
callback | Callback<void> | 否 | 回調(diào)函數(shù)。 |
示例:
- 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');
on(type: 'error', callback: ErrorCallback): void
訂閱UDPSocket連接的error事件。使用callback方式作為異步方法。
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
type | string | 是 | 訂閱的事件類型。'error':error事件。 |
callback | ErrorCallback | 是 | 回調(diào)函數(shù)。 |
示例:
- let udp = socket.constructUDPSocketInstance();
- udp.on('error', err => {
- console.log("on error, err:" + JSON.stringify(err))
- });
off(type: 'error', callback?: ErrorCallback): void
取消訂閱UDPSocket連接的error事件。使用callback方式作為異步方法。
可以指定傳入on中的callback取消一個訂閱,也可以不指定callback清空所有訂閱。
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
type | string | 是 | 訂閱的事件類型。'error':error事件。 |
callback | ErrorCallback | 否 | 回調(diào)函數(shù)。 |
示例:
- 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');
目標地址信息。
系統(tǒng)能力:以下各項對應(yīng)的系統(tǒng)能力均為SystemCapability.Communication.NetStack。
名稱 | 類型 | 必填 | 說明 |
---|---|---|---|
address | string | 是 | 本地綁定的ip地址。 |
port | number | 否 | 端口號 ,范圍0~65535。如果不指定系統(tǒng)隨機分配端口。 |
family | number | 否 | 網(wǎng)絡(luò)協(xié)議類型,可選類型: - 1:IPv4 - 2:IPv6 默認為1。 |
UDPSocket發(fā)送參數(shù)。
系統(tǒng)能力:以下各項對應(yīng)的系統(tǒng)能力均為SystemCapability.Communication.NetStack。
名稱 | 類型 | 必填 | 說明 |
---|---|---|---|
data | string | ArrayBuffer7+ | 是 | 發(fā)送的數(shù)據(jù)。 |
address | 是 | 目標地址信息。 |
UDPSocket連接的其他屬性。
系統(tǒng)能力:以下各項對應(yīng)的系統(tǒng)能力均為SystemCapability.Communication.NetStack。
名稱 | 類型 | 必填 | 說明 |
---|---|---|---|
broadcast | boolean | 否 | 是否可以發(fā)送廣播。默認為false。 |
receiveBufferSize | number | 否 | 接收緩沖區(qū)大小(單位:Byte)。 |
sendBufferSize | number | 否 | 發(fā)送緩沖區(qū)大?。▎挝唬築yte)。 |
reuseAddress | boolean | 否 | 是否重用地址。默認為false。 |
socketTimeout | number | 否 | 套接字超時時間,單位毫秒(ms)。 |
Socket的狀態(tài)信息。
系統(tǒng)能力:以下各項對應(yīng)的系統(tǒng)能力均為SystemCapability.Communication.NetStack。
名稱 | 類型 | 必填 | 說明 |
---|---|---|---|
isBound | boolean | 是 | 是否綁定。 |
isClose | boolean | 是 | 是否關(guān)閉。 |
isConnected | boolean | 是 | 是否連接。 |
Socket的連接信息。
系統(tǒng)能力:以下各項對應(yīng)的系統(tǒng)能力均為SystemCapability.Communication.NetStack。
名稱 | 類型 | 必填 | 說明 |
---|---|---|---|
address | string | 是 | 本地綁定的ip地址。 |
family | string | 是 | 網(wǎng)絡(luò)協(xié)議類型,可選類型: - IPv4 - IPv6 默認為IPv4。 |
port | number | 是 | 端口號,范圍0~65535。 |
size | number | 是 | 服務(wù)器響應(yīng)信息的字節(jié)長度。 |
constructTCPSocketInstance(): TCPSocket
創(chuàng)建一個TCPSocket對象。
系統(tǒng)能力:SystemCapability.Communication.NetStack
返回值:
類型 | 說明 |
---|---|
返回一個TCPSocket對象。 |
示例:
- let tcp = socket.constructTCPSocketInstance();
TCPSocket連接。在調(diào)用TCPSocket的方法前,需要先通過socket.constructTCPSocketInstance創(chuàng)建TCPSocket對象。
bind(address: NetAddress, callback: AsyncCallback<void>): void
綁定IP地址和端口,端口可以指定或由系統(tǒng)隨機分配。使用callback方法作為異步方法。
客戶端使用該方法創(chuàng)建socket。
需要權(quán)限:ohos.permission.INTERNET
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
address | 是 | 目標地址信息,參考NetAddress。 | |
callback | AsyncCallback<void> | 是 | 回調(diào)函數(shù)。 |
錯誤碼:
錯誤碼ID | 錯誤信息 |
---|---|
401 | Parameter error. |
201 | Permission denied. |
示例:
- 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');
- })
bind(address: NetAddress): Promise<void>
綁定IP地址和端口,端口可以指定或由系統(tǒng)隨機分配。使用Promise方法作為異步方法。
客戶端使用該方法創(chuàng)建socket。
需要權(quán)限:ohos.permission.INTERNET
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
address | 是 | 目標地址信息,參考NetAddress。 |
返回值:
類型 | 說明 |
---|---|
Promise<void> | 以Promise形式返回TCPSocket綁定本機的IP地址和端口的結(jié)果。 |
錯誤碼:
錯誤碼ID | 錯誤信息 |
---|---|
401 | Parameter error. |
201 | Permission denied. |
示例:
- 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.log('bind fail');
- });
connect(options: TCPConnectOptions, callback: AsyncCallback<void>): void
連接到指定的IP地址和端口。使用callback方法作為異步方法。
bind方法調(diào)用成功后,才可調(diào)用此方法。
需要權(quán)限:ohos.permission.INTERNET
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
options | 是 | TCPSocket連接的參數(shù),參考TCPConnectOptions。 | |
callback | AsyncCallback<void> | 是 | 回調(diào)函數(shù)。 |
錯誤碼:
錯誤碼ID | 錯誤信息 |
---|---|
401 | Parameter error. |
201 | Permission denied. |
示例:
- 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');
- })
connect(options: TCPConnectOptions): Promise<void>
連接到指定的IP地址和端口。使用promise方法作為異步方法。
需要權(quán)限:ohos.permission.INTERNET
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
options | 是 | TCPSocket連接的參數(shù),參考TCPConnectOptions。 |
返回值:
類型 | 說明 |
---|---|
Promise<void> | 以Promise形式返回TCPSocket連接到指定的IP地址和端口的結(jié)果。 |
錯誤碼:
錯誤碼ID | 錯誤信息 |
---|---|
401 | Parameter error. |
201 | Permission denied. |
示例:
- 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.log('connect fail');
- });
send(options: TCPSendOptions, callback: AsyncCallback<void>): void
通過TCPSocket連接發(fā)送數(shù)據(jù)。使用callback方式作為異步方法。
connect方法調(diào)用成功后,才可調(diào)用此方法。
需要權(quán)限:ohos.permission.INTERNET
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
options | 是 | TCPSocket發(fā)送請求的參數(shù),參考TCPSendOptions。 | |
callback | AsyncCallback<void> | 是 | 回調(diào)函數(shù)。 |
錯誤碼:
錯誤碼ID | 錯誤信息 |
---|---|
401 | Parameter error. |
201 | Permission denied. |
示例:
- 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');
- });
send(options: TCPSendOptions): Promise<void>
通過TCPSocket連接發(fā)送數(shù)據(jù)。使用Promise方式作為異步方法。
connect方法調(diào)用成功后,才可調(diào)用此方法。
需要權(quán)限:ohos.permission.INTERNET
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
options | 是 | TCPSocket發(fā)送請求的參數(shù),參考TCPSendOptions。 |
返回值:
類型 | 說明 |
---|---|
Promise<void> | 以Promise形式返回通過TCPSocket連接發(fā)送數(shù)據(jù)的結(jié)果。 |
錯誤碼:
錯誤碼ID | 錯誤信息 |
---|---|
401 | Parameter error. |
201 | Permission denied. |
示例:
- 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.log('connect fail');
- });
close(callback: AsyncCallback<void>): void
關(guān)閉TCPSocket連接。使用callback方式作為異步方法。
需要權(quán)限:ohos.permission.INTERNET
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
callback | AsyncCallback<void> | 是 | 回調(diào)函數(shù)。 |
錯誤碼:
錯誤碼ID | 錯誤信息 |
---|---|
201 | Permission denied. |
示例:
- let tcp = socket.constructTCPSocketInstance();
- tcp.close(err => {
- if (err) {
- console.log('close fail');
- return;
- }
- console.log('close success');
- })
close(): Promise<void>
關(guān)閉TCPSocket連接。使用Promise方式作為異步方法。
需要權(quán)限:ohos.permission.INTERNET
系統(tǒng)能力:SystemCapability.Communication.NetStack
返回值:
類型 | 說明 |
---|---|
Promise<void> | 以Promise形式返回關(guān)閉TCPSocket連接的結(jié)果。 |
錯誤碼:
錯誤碼ID | 錯誤信息 |
---|---|
201 | Permission denied. |
示例:
- let tcp = socket.constructTCPSocketInstance();
- let promise = tcp.close();
- promise.then(() => {
- console.log('close success');
- }).catch(err => {
- console.log('close fail');
- });
getRemoteAddress(callback: AsyncCallback<NetAddress>): void
獲取對端Socket地址。使用callback方式作為異步方法。
connect方法調(diào)用成功后,才可調(diào)用此方法。
需要權(quán)限:ohos.permission.INTERNET
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
callback | AsyncCallback<NetAddress> | 是 | 回調(diào)函數(shù)。 |
錯誤碼:
錯誤碼ID | 錯誤信息 |
---|---|
201 | Permission denied. |
示例:
- 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(): Promise<NetAddress>
獲取對端Socket地址。使用Promise方式作為異步方法。
connect方法調(diào)用成功后,才可調(diào)用此方法。
需要權(quán)限:ohos.permission.INTERNET
系統(tǒng)能力:SystemCapability.Communication.NetStack
返回值:
類型 | 說明 |
---|---|
Promise<NetAddress> | 以Promise形式返回獲取對端socket地址的結(jié)果。 |
錯誤碼:
錯誤碼ID | 錯誤信息 |
---|---|
201 | Permission denied. |
示例:
- 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.log('connect fail');
- });
getState(callback: AsyncCallback<SocketStateBase>): void
獲取TCPSocket狀態(tài)。使用callback方式作為異步方法。
bind或connect方法調(diào)用成功后,才可調(diào)用此方法。
需要權(quán)限:ohos.permission.INTERNET
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
callback | AsyncCallback<SocketStateBase> | 是 | 回調(diào)函數(shù)。 |
錯誤碼:
錯誤碼ID | 錯誤信息 |
---|---|
201 | Permission denied. |
示例:
- 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');
- });
getState(): Promise<SocketStateBase>
獲取TCPSocket狀態(tài)。使用Promise方式作為異步方法。
bind或connect方法調(diào)用成功后,才可調(diào)用此方法。
需要權(quán)限:ohos.permission.INTERNET
系統(tǒng)能力:SystemCapability.Communication.NetStack
返回值:
類型 | 說明 |
---|---|
Promise<SocketStateBase> | 以Promise形式返回獲取TCPSocket狀態(tài)的結(jié)果。 |
錯誤碼:
錯誤碼ID | 錯誤信息 |
---|---|
201 | Permission denied. |
示例:
- 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.log('connect fail');
- });
setExtraOptions(options: TCPExtraOptions, callback: AsyncCallback<void>): void
設(shè)置TCPSocket連接的其他屬性。使用callback方式作為異步方法。
bind或connect方法調(diào)用成功后,才可調(diào)用此方法。
需要權(quán)限:ohos.permission.INTERNET
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
options | 是 | TCPSocket連接的其他屬性,參考TCPExtraOptions。 | |
callback | AsyncCallback<void> | 是 | 回調(diào)函數(shù)。 |
錯誤碼:
錯誤碼ID | 錯誤信息 |
---|---|
401 | Parameter error. |
201 | Permission denied. |
示例:
- 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');
- });
setExtraOptions(options: TCPExtraOptions): Promise<void>
設(shè)置TCPSocket連接的其他屬性,使用Promise方式作為異步方法。
bind或connect方法調(diào)用成功后,才可調(diào)用此方法。
需要權(quán)限:ohos.permission.INTERNET
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
options | 是 | TCPSocket連接的其他屬性,參考TCPExtraOptions。 |
返回值:
類型 | 說明 |
---|---|
Promise<void> | 以Promise形式返回設(shè)置TCPSocket連接的其他屬性的結(jié)果。 |
錯誤碼:
錯誤碼ID | 錯誤信息 |
---|---|
401 | Parameter error. |
201 | Permission denied. |
示例:
- 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.log('connect fail');
- });
on(type: 'message', callback: Callback<{message: ArrayBuffer, remoteInfo: SocketRemoteInfo}>): void
訂閱TCPSocket連接的接收消息事件。使用callback方式作為異步方法。
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
type | string | 是 | 訂閱的事件類型。'message':接收消息事件。 |
callback | Callback<{message: ArrayBuffer, remoteInfo: SocketRemoteInfo}> | 是 | 回調(diào)函數(shù)。 |
示例:
- let tcp = socket.constructTCPSocketInstance();
- tcp.on('message', value => {
- console.log("on message, message:" + value.message + ", remoteInfo:" + value.remoteInfo)
- });
off(type: 'message', callback?: Callback<{message: ArrayBuffer, remoteInfo: SocketRemoteInfo}>): void
取消訂閱TCPSocket連接的接收消息事件。使用callback方式作為異步方法。
可以指定傳入on中的callback取消一個訂閱,也可以不指定callback清空所有訂閱。
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
type | string | 是 | 訂閱的事件類型。'message':接收消息事件。 |
callback | Callback<{message: ArrayBuffer, remoteInfo: SocketRemoteInfo}> | 否 | 回調(diào)函數(shù)。 |
示例:
- 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(type: 'connect' | 'close', callback: Callback<void>): void
訂閱TCPSocket的連接事件或關(guān)閉事件。使用callback方式作為異步方法。
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
type | string | 是 | 訂閱的事件類型。 - 'connect':連接事件。 - 'close':關(guān)閉事件。 |
callback | Callback<void> | 是 | 回調(diào)函數(shù)。 |
示例:
- let tcp = socket.constructTCPSocketInstance();
- tcp.on('connect', () => {
- console.log("on connect success")
- });
- tcp.on('close', data => {
- console.log("on close success")
- });
off(type: 'connect' | 'close', callback?: Callback<void>): void
取消訂閱TCPSocket的連接事件或關(guān)閉事件。使用callback方式作為異步方法。
可以指定傳入on中的callback取消一個訂閱,也可以不指定callback清空所有訂閱。
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
type | string | 是 | 訂閱的事件類型。 - 'connect':連接事件。 - 'close':關(guān)閉事件。 |
callback | Callback<void> | 否 | 回調(diào)函數(shù)。 |
示例:
- 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');
on(type: 'error', callback: ErrorCallback): void
訂閱TCPSocket連接的error事件。使用callback方式作為異步方法。
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
type | string | 是 | 訂閱的事件類型。'error':error事件。 |
callback | ErrorCallback | 是 | 回調(diào)函數(shù)。 |
示例:
- let tcp = socket.constructTCPSocketInstance();
- tcp.on('error', err => {
- console.log("on error, err:" + JSON.stringify(err))
- });
off(type: 'error', callback?: ErrorCallback): void
取消訂閱TCPSocket連接的error事件。使用callback方式作為異步方法。
可以指定傳入on中的callback取消一個訂閱,也可以不指定callback清空所有訂閱。
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
type | string | 是 | 訂閱的事件類型。'error':error事件。 |
callback | ErrorCallback | 否 | 回調(diào)函數(shù)。 |
示例:
- 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');
TCPSocket連接的參數(shù)。
系統(tǒng)能力:以下各項對應(yīng)的系統(tǒng)能力均為SystemCapability.Communication.NetStack。
名稱 | 類型 | 必填 | 說明 |
---|---|---|---|
address | 是 | 綁定的地址以及端口。 | |
timeout | number | 否 | 超時時間,單位毫秒(ms)。 |
TCPSocket發(fā)送請求的參數(shù)。
系統(tǒng)能力:以下各項對應(yīng)的系統(tǒng)能力均為SystemCapability.Communication.NetStack。
名稱 | 類型 | 必填 | 說明 |
---|---|---|---|
data | string| ArrayBuffer7+ | 是 | 發(fā)送的數(shù)據(jù)。 |
encoding | string | 否 | 字符編碼(UTF-8,UTF-16BE,UTF-16LE,UTF-16,US-AECII,ISO-8859-1),默認為UTF-8。 |
TCPSocket連接的其他屬性。
系統(tǒng)能力:以下各項對應(yīng)的系統(tǒng)能力均為SystemCapability.Communication.NetStack。
名稱 | 類型 | 必填 | 說明 |
---|---|---|---|
keepAlive | boolean | 否 | 是否保持連接。默認為false。 |
OOBInline | boolean | 否 | 是否為OOB內(nèi)聯(lián)。默認為false。 |
TCPNoDelay | boolean | 否 | TCPSocket連接是否無時延。默認為false。 |
socketLinger | Object | 是 | socket是否繼續(xù)逗留。 - on:是否逗留(true:逗留;false:不逗留)。 - linger:逗留時長,單位毫秒(ms),取值范圍為0~65535。 當入?yún)n設(shè)置為true時,才需要設(shè)置。 |
receiveBufferSize | number | 否 | 接收緩沖區(qū)大?。▎挝唬築yte)。 |
sendBufferSize | number | 否 | 發(fā)送緩沖區(qū)大?。▎挝唬築yte)。 |
reuseAddress | boolean | 否 | 是否重用地址。默認為false。 |
socketTimeout | number | 否 | 套接字超時時間,單位毫秒(ms)。 |
constructTLSSocketInstance(): TLSSocket
創(chuàng)建并返回一個TLSSocket對象。
系統(tǒng)能力:SystemCapability.Communication.NetStack
返回值:
類型 | 說明 |
---|---|
返回一個TLSSocket對象。 |
示例:
- let tls = socket.constructTLSSocketInstance();
TLSSocket連接。在調(diào)用TLSSocket的方法前,需要先通過socket.constructTLSSocketInstance創(chuàng)建TLSSocket對象。
bind(address: NetAddress, callback: AsyncCallback<void>): void
綁定IP地址和端口。使用callback方法作為異步方法。
需要權(quán)限:ohos.permission.INTERNET
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
address | 是 | 目標地址信息,參考NetAddress。 | |
callback | AsyncCallback<void> | 是 | 回調(diào)函數(shù)。成功返回TLSSocket綁定本機的IP地址和端口的結(jié)果。 失敗返回錯誤碼,錯誤信息。 |
錯誤碼:
錯誤碼ID | 錯誤信息 |
---|---|
401 | Parameter error. |
201 | Permission denied. |
2303198 | Address already in use. |
2300002 | System internal error. |
示例:
- tls.bind({address: '192.168.xx.xxx', port: xxxx, family: 1}, err => {
- if (err) {
- console.log('bind fail');
- return;
- }
- console.log('bind success');
- });
bind(address: NetAddress): Promise<void>
綁定IP地址和端口。使用Promise方法作為異步方法。
需要權(quán)限:ohos.permission.INTERNET
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
address | 是 | 目標地址信息,參考NetAddress。 |
返回值:
類型 | 說明 |
---|---|
Promise<void> | 以Promise形式返回TLSSocket綁定本機的IP地址和端口的結(jié)果。失敗返回錯誤碼,錯誤信息。 |
錯誤碼:
錯誤碼ID | 錯誤信息 |
---|---|
401 | Parameter error. |
201 | Permission denied. |
2303198 | Address already in use. |
2300002 | System internal error. |
示例:
- let promise = tls.bind({address: '192.168.xx.xxx', port: xxxx, family: 1});
- promise.then(() => {
- console.log('bind success');
- }).catch(err => {
- console.log('bind fail');
- });
getState(callback: AsyncCallback<SocketStateBase>): void
在TLSSocket的bind成功之后,獲取TLSSocket狀態(tài)。使用callback方式作為異步方法。
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
callback | AsyncCallback<SocketStateBase> | 是 | 回調(diào)函數(shù)。成功返回TLSSocket狀態(tài),失敗返回錯誤碼,錯誤信息。 |
錯誤碼:
錯誤碼ID | 錯誤信息 |
---|---|
2303188 | Socket operation on non-socket. |
2300002 | System internal error. |
示例:
- 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));
- });
getState(): Promise<SocketStateBase>
在TLSSocket的bind成功之后,獲取TLSSocket狀態(tài)。使用Promise方式作為異步方法。
系統(tǒng)能力:SystemCapability.Communication.NetStack
返回值:
類型 | 說明 |
---|---|
Promise<SocketStateBase> | 以Promise形式返回獲取TLSSocket狀態(tài)的結(jié)果。失敗返回錯誤碼,錯誤信息。 |
錯誤碼:
錯誤碼ID | 錯誤信息 |
---|---|
2303188 | Socket operation on non-socket. |
2300002 | System internal error. |
示例:
- 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.log('getState fail');
- });
setExtraOptions(options: TCPExtraOptions, callback: AsyncCallback<void>): void
在TLSSocket的bind成功之后,設(shè)置TCPSocket連接的其他屬性。使用callback方式作為異步方法。
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
options | 是 | TCPSocket連接的其他屬性,參考TCPExtraOptions。 | |
callback | AsyncCallback<void> | 是 | 回調(diào)函數(shù)。成功返回設(shè)置TCPSocket連接的其他屬性的結(jié)果,失敗返回錯誤碼,錯誤信息。 |
錯誤碼:
錯誤碼ID | 錯誤信息 |
---|---|
401 | Parameter error. |
2303188 | Socket operation on non-socket. |
2300002 | System internal error. |
示例:
- tls.bind({address: '192.168.xx.xxx', port: xxxx, family: 1}, err => {
- if (err) {
- console.log('bind fail');
- return;
- }
- console.log('bind success');
- });
- 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');
- });
setExtraOptions(options: TCPExtraOptions): Promise<void>
在TLSSocket的bind成功之后,設(shè)置TCPSocket連接的其他屬性,使用Promise方式作為異步方法。
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
options | 是 | TCPSocket連接的其他屬性,參考TCPExtraOptions。 |
返回值:
類型 | 說明 |
---|---|
Promise<void> | 以Promise形式返回設(shè)置TCPSocket連接的其他屬性的結(jié)果。失敗返回錯誤碼,錯誤信息。 |
錯誤碼:
錯誤碼ID | 錯誤信息 |
---|---|
401 | Parameter error. |
2303188 | Socket operation on non-socket. |
2300002 | System internal error. |
示例:
- 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.log('setExtraOptions fail');
- });
connect(options: TLSConnectOptions, callback: AsyncCallback<void>): void
在TLSSocket上bind成功之后,進行通信連接,并創(chuàng)建和初始化TLS會話,實現(xiàn)建立連接過程,啟動與服務(wù)器的TLS/SSL握手,實現(xiàn)數(shù)據(jù)傳輸功能,使用callback方式作為異步方法。
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
options | 是 | TLSSocket連接所需要的參數(shù)。 | |
callback | AsyncCallback<void> | 是 | 回調(diào)函數(shù),成功無返回,失敗返回錯誤碼,錯誤信息。 |
錯誤碼:
錯誤碼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. |
示例:
- 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",
- },
- };
- 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",
- },
- };
- tlsOneWay.connect(oneWayOptions, (err, data) => {
- console.error("connect callback error"+err);
- console.log(JSON.stringify(data));
- });
connect(options: TLSConnectOptions): Promise<void>
在TLSSocket上bind成功之后,進行通信連接,并創(chuàng)建和初始化TLS會話,實現(xiàn)建立連接過程,啟動與服務(wù)器的TLS/SSL握手,實現(xiàn)數(shù)據(jù)傳輸功能,該連接包括兩種認證方式,單向認證與雙向認證,使用Promise方式作為異步方法。
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
options | 是 | 連接所需要的參數(shù)。 |
返回值:
類型 | 說明 |
---|---|
Promise<void> | 以Promise形式返回,成功無返回,失敗返回錯誤碼,錯誤信息。 |
錯誤碼:
錯誤碼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. |
示例:
- 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",
- },
- };
- 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",
- },
- };
- tlsOneWay.connect(oneWayOptions).then(data => {
- console.log(JSON.stringify(data));
- }).catch(err => {
- console.error(err);
- });
getRemoteAddress(callback: AsyncCallback<NetAddress>): void
在TLSSocket通信連接成功之后,獲取對端Socket地址。使用callback方式作為異步方法。
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
callback | AsyncCallback<NetAddress> | 是 | 回調(diào)函數(shù)。成功返回對端的socket地址,失敗返回錯誤碼,錯誤信息。 |
錯誤碼:
錯誤碼ID | 錯誤信息 |
---|---|
2303188 | Socket operation on non-socket. |
2300002 | System internal error. |
示例:
- tls.getRemoteAddress((err, data) => {
- if (err) {
- console.log('getRemoteAddress fail');
- return;
- }
- console.log('getRemoteAddress success:' + JSON.stringify(data));
- });
getRemoteAddress(): Promise<NetAddress>
在TLSSocket通信連接成功之后,獲取對端Socket地址。使用Promise方式作為異步方法。
系統(tǒng)能力:SystemCapability.Communication.NetStack
返回值:
類型 | 說明 |
---|---|
Promise<NetAddress> | 以Promise形式返回獲取對端socket地址的結(jié)果。失敗返回錯誤碼,錯誤信息。 |
錯誤碼:
錯誤碼ID | 錯誤信息 |
---|---|
2303188 | Socket operation on non-socket. |
2300002 | System internal error. |
示例:
- let promise = tls.getRemoteAddress();
- promise.then(() => {
- console.log('getRemoteAddress success');
- }).catch(err => {
- console.log('getRemoteAddress fail');
- });
getCertificate(callback: AsyncCallback<X509CertRawData>): void
在TLSSocket通信連接成功之后,獲取本地的數(shù)字證書,該接口只適用于雙向認證時,使用callback方式作為異步方法。
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
callback | AsyncCallback<X509CertRawData> | 是 | 回調(diào)函數(shù),成功返回本地的證書,失敗返回錯誤碼,錯誤信息。 |
錯誤碼:
錯誤碼ID | 錯誤信息 |
---|---|
2303501 | SSL is null. |
2303504 | Error looking up x509. |
2300002 | System internal error. |
示例:
- tls.getCertificate((err, data) => {
- if (err) {
- console.log("getCertificate callback error = " + err);
- } else {
- console.log("getCertificate callback = " + data);
- }
- });
getCertificate():Promise<X509CertRawData>
在TLSSocket通信連接之后,獲取本地的數(shù)字證書,該接口只適用于雙向認證時,使用Promise方式作為異步方法。
系統(tǒng)能力:SystemCapability.Communication.NetStack
返回值:
類型 | 說明 |
---|---|
Promise<X509CertRawData> | 以Promise形式返回本地的數(shù)字證書的結(jié)果。失敗返回錯誤碼,錯誤信息。 |
錯誤碼:
錯誤碼ID | 錯誤信息 |
---|---|
2303501 | SSL is null. |
2303504 | Error looking up x509. |
2300002 | System internal error. |
示例:
- tls.getCertificate().then(data => {
- console.log(data);
- }).catch(err => {
- console.error(err);
- });
getRemoteCertificate(callback: AsyncCallback<X509CertRawData>): void
在TLSSocket通信連接成功之后,獲取服務(wù)端的數(shù)字證書,使用callback方式作為異步方法。
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
callback | AsyncCallback<X509CertRawData> | 是 | 回調(diào)函數(shù),返回服務(wù)端的證書。失敗返回錯誤碼,錯誤信息。 |
錯誤碼:
錯誤碼ID | 錯誤信息 |
---|---|
2303501 | SSL is null. |
2300002 | System internal error. |
示例:
- tls.getRemoteCertificate((err, data) => {
- if (err) {
- console.log("getRemoteCertificate callback error = " + err);
- } else {
- console.log("getRemoteCertificate callback = " + data);
- }
- });
getRemoteCertificate():Promise<X509CertRawData>
在TLSSocket通信連接成功之后,獲取服務(wù)端的數(shù)字證書,使用Promise方式作為異步方法。
系統(tǒng)能力:SystemCapability.Communication.NetStack
返回值:
類型 | 說明 |
---|---|
Promise<X509CertRawData> | 以Promise形式返回服務(wù)端的數(shù)字證書的結(jié)果。失敗返回錯誤碼,錯誤信息。 |
錯誤碼:
錯誤碼ID | 錯誤信息 |
---|---|
2303501 | SSL is null. |
2300002 | System internal error. |
示例:
- tls.getRemoteCertificate().then(data => {
- console.log(data);
- }).catch(err => {
- console.error(err);
- });
getProtocol(callback: AsyncCallback<string>): void
在TLSSocket通信連接成功之后,獲取通信的協(xié)議版本,使用callback方式作為異步方法。
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
callback | AsyncCallback<string> | 是 | 回調(diào)函數(shù),返回通信的協(xié)議。失敗返回錯誤碼,錯誤信息。 |
錯誤碼:
錯誤碼ID | 錯誤信息 |
---|---|
2303501 | SSL is null. |
2303505 | Error occurred in the tls system call. |
2300002 | System internal error. |
示例:
- tls.getProtocol((err, data) => {
- if (err) {
- console.log("getProtocol callback error = " + err);
- } else {
- console.log("getProtocol callback = " + data);
- }
- });
getProtocol():Promise<string>
在TLSSocket通信連接成功之后,獲取通信的協(xié)議版本,使用Promise方式作為異步方法。
系統(tǒng)能力:SystemCapability.Communication.NetStack
返回值:
類型 | 說明 |
---|---|
Promise<string> | 以Promise形式返回通信的協(xié)議。失敗返回錯誤碼,錯誤信息。 |
錯誤碼:
錯誤碼ID | 錯誤信息 |
---|---|
2303501 | SSL is null. |
2303505 | Error occurred in the tls system call. |
2300002 | System internal error. |
示例:
- tls.getProtocol().then(data => {
- console.log(data);
- }).catch(err => {
- console.error(err);
- });
getCipherSuite(callback: AsyncCallback<Array<string>>): void
在TLSSocket通信連接成功之后,獲取通信雙方協(xié)商后的加密套件,使用callback方式作為異步方法。
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
callback | AsyncCallback<Array<string>> | 是 | 回調(diào)函數(shù),返回通信雙方支持的加密套件。 失敗返回錯誤碼,錯誤信息。 |
錯誤碼:
錯誤碼ID | 錯誤信息 |
---|---|
2303501 | SSL is null. |
2303502 | Error in tls reading. |
2303505 | Error occurred in the tls system call. |
2300002 | System internal error. |
示例:
- tls.getCipherSuite((err, data) => {
- if (err) {
- console.log("getCipherSuite callback error = " + err);
- } else {
- console.log("getCipherSuite callback = " + data);
- }
- });
getCipherSuite(): Promise<Array<string>>
在TLSSocket通信連接成功之后,獲取通信雙方協(xié)商后的加密套件,使用Promise方式作為異步方法。
系統(tǒng)能力:SystemCapability.Communication.NetStack
返回值:
類型 | 說明 |
---|---|
Promise<Array<string>> | 以Promise形式返回通信雙方支持的加密套件。失敗返回錯誤碼,錯誤信息。 |
錯誤碼:
錯誤碼ID | 錯誤信息 |
---|---|
2303501 | SSL is null. |
2303502 | Error in tls reading. |
2303505 | Error occurred in the tls system call. |
2300002 | System internal error. |
示例:
- tls.getCipherSuite().then(data => {
- console.log('getCipherSuite success:' + JSON.stringify(data));
- }).catch(err => {
- console.error(err);
- });
getSignatureAlgorithms(callback: AsyncCallback<Array<string>>): void
在TLSSocket通信連接成功之后,獲取通信雙方協(xié)商后簽名算法,該接口只適配雙向認證模式下,使用callback方式作為異步方法。
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
callback | AsyncCallback<Array<string>> | 是 | 回調(diào)函數(shù),返回雙方支持的簽名算法。 |
錯誤碼:
錯誤碼ID | 錯誤信息 |
---|---|
2303501 | SSL is null. |
2300002 | System internal error. |
示例:
- tls.getSignatureAlgorithms((err, data) => {
- if (err) {
- console.log("getSignatureAlgorithms callback error = " + err);
- } else {
- console.log("getSignatureAlgorithms callback = " + data);
- }
- });
getSignatureAlgorithms(): Promise<Array<string>>
在TLSSocket通信連接成功之后,獲取通信雙方協(xié)商后的簽名算法,該接口只適配雙向認證模式下,使用Promise方式作為異步方法。
系統(tǒng)能力:SystemCapability.Communication.NetStack
返回值:
類型 | 說明 |
---|---|
Promise<Array<string>> | 以Promise形式返回獲取到的雙方支持的簽名算法。 |
錯誤碼:
錯誤碼ID | 錯誤信息 |
---|---|
2303501 | SSL is null. |
2300002 | System internal error. |
示例:
- tls.getSignatureAlgorithms().then(data => {
- console.log("getSignatureAlgorithms success" + data);
- }).catch(err => {
- console.error(err);
- });
send(data: string, callback: AsyncCallback<void>): void
在TLSSocket通信連接成功之后,向服務(wù)端發(fā)送消息,使用callback方式作為異步方法。
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
data | string | 是 | 發(fā)送的數(shù)據(jù)內(nèi)容。 |
callback | AsyncCallback<void> | 是 | 回調(diào)函數(shù),返回TLSSocket發(fā)送數(shù)據(jù)的結(jié)果。失敗返回錯誤碼,錯誤信息。 |
錯誤碼:
錯誤碼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. |
示例:
- tls.send("xxxx", (err) => {
- if (err) {
- console.log("send callback error = " + err);
- } else {
- console.log("send success");
- }
- });
send(data: string): Promise<void>
在TLSSocket通信連接成功之后,向服務(wù)端發(fā)送消息,使用Promise方式作為異步方法。
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
data | string | 是 | 發(fā)送的數(shù)據(jù)內(nèi)容。 |
錯誤碼:
錯誤碼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. |
返回值:
類型 | 說明 |
---|---|
Promise<void> | 以Promise形式返回,返回TLSSocket發(fā)送數(shù)據(jù)的結(jié)果。失敗返回錯誤碼,錯誤信息。 |
示例:
- tls.send("xxxx").then(() =>{
- console.log("send success");
- }).catch(err => {
- console.error(err);
- });
close(callback: AsyncCallback<void>): void
在TLSSocket通信連接成功之后,斷開連接,使用callback方式作為異步方法。
系統(tǒng)能力:SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
callback | AsyncCallback<void> | 是 | 回調(diào)函數(shù),成功返回TLSSocket關(guān)閉連接的結(jié)果。 失敗返回錯誤碼,錯誤信息。 |
錯誤碼:
錯誤碼ID | 錯誤信息 |
---|---|
2303501 | SSL is null. |
2303505 | Error occurred in the tls system call. |
2303506 | Error clearing tls connection. |
2300002 | System internal error. |
示例:
- tls.close((err) => {
- if (err) {
- console.log("close callback error = " + err);
- } else {
- console.log("close success");
- }
- });
close(): Promise<void>
在TLSSocket通信連接成功之后,斷開連接,使用Promise方式作為異步方法。
系統(tǒng)能力:SystemCapability.Communication.NetStack
返回值:
類型 | 說明 |
---|---|
Promise<void> | 以Promise形式返回,返回TLSSocket關(guān)閉連接的結(jié)果。失敗返回錯誤碼,錯誤信息。 |
錯誤碼:
錯誤碼ID | 錯誤信息 |
---|---|
2303501 | SSL is null. |
2303505 | Error occurred in the tls system call. |
2303506 | Error clearing tls connection. |
2300002 | System internal error. |
示例:
- tls.close().then(() =>{
- console.log("close success");
- }).catch(err => {
- console.error(err);
- });
TLS連接的操作。
系統(tǒng)能力:SystemCapability.Communication.NetStack
名稱 | 類型 | 必填 | 說明 |
---|---|---|---|
address | 是 | 網(wǎng)關(guān)地址。 | |
secureOptions | 是 | TLS安全相關(guān)操作。 | |
ALPNProtocols | Array<string> | 否 | ALPN協(xié)議。 |
TLS安全相關(guān)操作,其中ca證書為必選參數(shù),其他參數(shù)為可選參數(shù)。當本地證書cert和私鑰key不為空時,開啟雙向驗證模式。cert和key其中一項為空時,開啟單向驗證模式。
系統(tǒng)能力:SystemCapability.Communication.NetStack
名稱 | 類型 | 必填 | 說明 |
---|---|---|---|
ca | string | Array<string> | 是 | 服務(wù)端的ca證書,用于認證校驗服務(wù)端的數(shù)字證書。 |
cert | string | 否 | 本地客戶端的數(shù)字證書。 |
key | string | 否 | 本地數(shù)字證書的私鑰。 |
password | string | 否 | 讀取私鑰的密碼。 |
protocols | 否 | TLS的協(xié)議版本。 | |
useRemoteCipherPrefer | boolean | 否 | 優(yōu)先使用對等方的密碼套件。 |
signatureAlgorithms | string | 否 | 通信過程中的簽名算法。 |
cipherSuite | string | 否 | 通信過程中的加密套件。 |
TLS通信的協(xié)議版本。
系統(tǒng)能力:SystemCapability.Communication.NetStack
名稱 | 值 | 說明 |
---|---|---|
TLSv12 | "TLSv1.2" | 使用TLSv1.2協(xié)議通信。 |
TLSv13 | "TLSv1.3" | 使用TLSv1.3協(xié)議通信。 |
更多建議: