本模块提供利用Socket进行数据传输的能力,支持TCPSocket、UDPSocket、WebSocket和TLSSocket。
本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
本模块API使用时建议放在worker线程或者taskpool中做网络操作,否则可能会导致UI线程卡顿。
constructUDPSocketInstance(): UDPSocket
创建一个UDPSocket对象。
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| UDPSocket | 返回一个UDPSocket对象。 |
示例:
import { socket } from '@kit.NetworkKit';
let udp: socket.UDPSocket = socket.constructUDPSocketInstance(); bind(address: NetAddress, callback: AsyncCallback<void>): void
绑定IP地址和端口,端口可以由用户指定或由系统随机分配。使用callback异步回调。
需要权限:ohos.permission.INTERNET
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| address | NetAddress | 是 | 本端地址信息,参考NetAddress。 |
| callback | AsyncCallback<void> | 是 | 回调函数。成功返回空,失败返回错误码、错误信息。 |
错误码:
以下错误码的详细介绍请参见通用错误码。
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 201 | Permission denied. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let udp: socket.UDPSocket = socket.constructUDPSocketInstance();
let bindAddr: socket.NetAddress = {
address: '192.168.xx.xxx', // 本端地址
port: 1234
}
udp.bind(bindAddr, (err: BusinessError) => {
if (err) {
console.error('bind fail');
return;
}
console.info('bind success');
}); bind(address: NetAddress): Promise<void>
绑定IP地址和端口,端口可以由用户指定或由系统随机分配。使用Promise异步回调。
需要权限:ohos.permission.INTERNET
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| address | NetAddress | 是 | 本端地址信息,参考NetAddress。 |
返回值:
| 类型 | 说明 |
|---|---|
| Promise<void> | Promise对象。无返回结果的Promise对象。 |
错误码:
以下错误码的详细介绍请参见通用错误码。
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 201 | Permission denied. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let udp: socket.UDPSocket = socket.constructUDPSocketInstance();
let bindAddr: socket.NetAddress = {
address: '192.168.xx.xxx', // 本端地址
port: 8080
}
udp.bind(bindAddr).then(() => {
console.info('bind success');
}).catch((err: BusinessError) => {
console.error('bind fail');
}); send(options: UDPSendOptions, callback: AsyncCallback<void>): void
通过UDPSocket连接发送数据。使用callback异步回调。
发送数据前,需要先调用UDPSocket.bind()绑定IP地址和端口。该接口为耗时操作,请在Worker线程或taskpool线程调用该接口。
需要权限:ohos.permission.INTERNET
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| options | UDPSendOptions | 是 | UDPSocket发送参数,参考UDPSendOptions。 |
| callback | AsyncCallback<void> | 是 | 回调函数。成功返回空,失败返回错误码、错误信息。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 201 | Permission denied. |
| 2301206 | Socks5 failed to connect to the proxy server. 适用版本:18+ |
| 2301207 | Socks5 username or password is invalid. 适用版本:18+ |
| 2301208 | Socks5 failed to connect to the remote server. 适用版本:18+ |
| 2301209 | Socks5 failed to negotiate the authentication method. 适用版本:18+ |
| 2301210 | Socks5 failed to send the message. 适用版本:18+ |
| 2301211 | Socks5 failed to receive the message. 适用版本:18+ |
| 2301212 | Socks5 serialization error. 适用版本:18+ |
| 2301213 | Socks5 deserialization error. 适用版本:18+ |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let udp: socket.UDPSocket = socket.constructUDPSocketInstance();
let bindAddr: socket.NetAddress = {
address: '192.168.xx.xxx', // 本端地址
port: 1234
}
udp.bind(bindAddr, (err: BusinessError) => {
if (err) {
console.error('bind fail');
return;
}
console.info('bind success');
});
let netAddress: socket.NetAddress = {
address: '192.168.xx.xxx', // 对端地址
port: 8080
}
let sendOptions: socket.UDPSendOptions = {
data: 'Hello, server!',
address: netAddress
}
udp.send(sendOptions, (err: BusinessError) => {
if (err) {
console.error('send fail');
return;
}
console.info('send success');
}); 示例(设置socket代理):
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let udp: socket.UDPSocket = socket.constructUDPSocketInstance();
let bindAddr: socket.NetAddress = {
address: '192.168.xx.xxx', // 本端地址
port: 1234
}
udp.bind(bindAddr, (err: BusinessError) => {
if (err) {
console.error('bind fail');
return;
}
console.info('bind success');
});
let netAddress: socket.NetAddress = {
address: '192.168.xx.xxx', // 对端地址
port: 8080
}
let socks5Server: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let proxyOptions: socket.ProxyOptions = {
type : 1,
address: socks5Server,
username: "xxx",
password: "xxx"
}
let sendOptions: socket.UDPSendOptions = {
data: 'Hello, server!',
address: netAddress,
proxy: proxyOptions,
}
udp.send(sendOptions, (err: BusinessError) => {
if (err) {
console.error('send fail');
return;
}
console.info('send success');
}); send(options: UDPSendOptions): Promise<void>
通过UDPSocket连接发送数据。使用Promise异步回调。
发送数据前,需要先调用UDPSocket.bind()绑定IP地址和端口。该接口为耗时操作,请在Worker线程或taskpool线程调用该接口。
需要权限:ohos.permission.INTERNET
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| options | UDPSendOptions | 是 | UDPSocket发送参数,参考UDPSendOptions。 |
返回值:
| 类型 | 说明 |
|---|---|
| Promise<void> | Promise对象。无返回结果的Promise对象。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 201 | Permission denied. |
| 2301206 | Socks5 failed to connect to the proxy server. 适用版本:18+ |
| 2301207 | Socks5 username or password is invalid. 适用版本:18+ |
| 2301208 | Socks5 failed to connect to the remote server. 适用版本:18+ |
| 2301209 | Socks5 failed to negotiate the authentication method. 适用版本:18+ |
| 2301210 | Socks5 failed to send the message. 适用版本:18+ |
| 2301211 | Socks5 failed to receive the message. 适用版本:18+ |
| 2301212 | Socks5 serialization error. 适用版本:18+ |
| 2301213 | Socks5 deserialization error. 适用版本:18+ |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let udp: socket.UDPSocket = socket.constructUDPSocketInstance();
let bindAddr: socket.NetAddress = {
address: '192.168.xx.xxx', // 本端地址
port: 8080
}
udp.bind(bindAddr).then(() => {
console.info('bind success');
}).catch((err: BusinessError) => {
console.error('bind fail');
return;
});
let netAddress: socket.NetAddress = {
address: '192.168.xx.xxx', // 对端地址
port: 8080
}
let sendOptions: socket.UDPSendOptions = {
data: 'Hello, server!',
address: netAddress
}
udp.send(sendOptions).then(() => {
console.info('send success');
}).catch((err: BusinessError) => {
console.error('send fail');
}); 示例(设置socket代理):
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let udp: socket.UDPSocket = socket.constructUDPSocketInstance();
let bindAddr: socket.NetAddress = {
address: '192.168.xx.xxx', // 本端地址
port: 8080
}
udp.bind(bindAddr).then(() => {
console.info('bind success');
}).catch((err: BusinessError) => {
console.error('bind fail');
return;
});
let netAddress: socket.NetAddress = {
address: '192.168.xx.xxx', // 对端地址
port: 8080
}
let socks5Server: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let proxyOptions: socket.ProxyOptions = {
type : 1,
address: socks5Server,
username: "xxx",
password: "xxx"
}
let sendOptions: socket.UDPSendOptions = {
data: 'Hello, server!',
address: netAddress,
proxy: proxyOptions,
}
udp.send(sendOptions).then(() => {
console.info('send success');
}).catch((err: BusinessError) => {
console.error('send fail');
}); close(callback: AsyncCallback<void>): void
关闭UDPSocket连接。使用callback异步回调。
需要权限:ohos.permission.INTERNET
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| callback | AsyncCallback<void> | 是 | 回调函数。关闭UDPSocket连接后触发回调函数。 |
错误码:
以下错误码的详细介绍请参见通用错误码。
| 错误码ID | 错误信息 |
|---|---|
| 201 | Permission denied. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let udp: socket.UDPSocket = socket.constructUDPSocketInstance();
udp.close((err: BusinessError) => {
if (err) {
console.error('close fail');
return;
}
console.info('close success');
}) close(): Promise<void>
关闭UDPSocket连接。使用Promise异步回调。
需要权限:ohos.permission.INTERNET
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| Promise<void> | Promise对象。无返回结果的Promise对象。 |
错误码:
以下错误码的详细介绍请参见通用错误码。
| 错误码ID | 错误信息 |
|---|---|
| 201 | Permission denied. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let udp: socket.UDPSocket = socket.constructUDPSocketInstance();
udp.close().then(() => {
console.info('close success');
}).catch((err: BusinessError) => {
console.error('close fail');
}); getState(callback: AsyncCallback<SocketStateBase>): void
获取UDPSocket状态。使用callback异步回调。
bind方法调用成功后,才可调用此方法。
需要权限:ohos.permission.INTERNET
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| callback | AsyncCallback<SocketStateBase> | 是 | 回调函数。成功返回UDPSocket状态信息,失败返回错误码、错误信息。 |
错误码:
以下错误码的详细介绍请参见通用错误码。
| 错误码ID | 错误信息 |
|---|---|
| 201 | Permission denied. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let udp: socket.UDPSocket = socket.constructUDPSocketInstance();
let bindAddr: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
udp.bind(bindAddr, (err: BusinessError) => {
if (err) {
console.error('bind fail');
return;
}
console.error('bind success');
udp.getState((err: BusinessError, data: socket.SocketStateBase) => {
if (err) {
console.error('getState fail');
return;
}
console.info('getState success:' + JSON.stringify(data));
})
}) getState(): Promise<SocketStateBase>
获取UDPSocket状态。使用Promise异步回调。
bind方法调用成功后,才可调用此方法。
需要权限:ohos.permission.INTERNET
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| Promise<SocketStateBase> | Promise对象,返回获取UDPSocket状态的结果。 |
错误码:
以下错误码的详细介绍请参见通用错误码。
| 错误码ID | 错误信息 |
|---|---|
| 201 | Permission denied. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let udp: socket.UDPSocket = socket.constructUDPSocketInstance();
let bindAddr: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
udp.bind(bindAddr, (err: BusinessError) => {
if (err) {
console.error('bind fail');
return;
}
console.info('bind success');
udp.getState().then((data: socket.SocketStateBase) => {
console.info('getState success:' + JSON.stringify(data));
}).catch((err: BusinessError) => {
console.error('getState fail' + JSON.stringify(err));
});
}); getSocketFd(): Promise<number>
获取UDPSocket的文件描述符。使用Promise异步回调。
需要权限:ohos.permission.INTERNET
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| Promise<number> | Promise对象,返回Socket的文件描述符。 |
错误码:
以下错误码的详细介绍请参见通用错误码。
| 错误码ID | 错误信息 |
|---|---|
| 201 | Permission denied. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let udp: socket.UDPSocket = socket.constructUDPSocketInstance();
let bindAddr: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
udp.bind(bindAddr)
.then(() => {
udp.getSocketFd()
.then((fd: number) => {
console.info(`Socket FD:${fd}`);
}).catch((err: BusinessError) => {
console.error(`getSocketFd fail: ${err.message}, errorCode: ${err.code}`);
});
}).catch((err: BusinessError) => {
console.error('bind fail');
}); setExtraOptions(options: UDPExtraOptions, callback: AsyncCallback<void>): void
设置UDPSocket连接的其他属性。使用callback异步回调。
bind方法调用成功后,才可调用此方法。
需要权限:ohos.permission.INTERNET
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| options | UDPExtraOptions | 是 | UDPSocket连接的其他属性,参考UDPExtraOptions。 |
| callback | AsyncCallback<void> | 是 | 回调函数。成功返回空,失败返回错误码、错误信息。 |
错误码:
以下错误码的详细介绍请参见通用错误码。
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 201 | Permission denied. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let udp: socket.UDPSocket = socket.constructUDPSocketInstance();
let bindAddr: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
udp.bind(bindAddr, (err: BusinessError) => {
if (err) {
console.error('bind fail');
return;
}
console.info('bind success');
let udpextraoptions: socket.UDPExtraOptions = {
receiveBufferSize: 8192,
sendBufferSize: 8192,
reuseAddress: false,
socketTimeout: 6000,
broadcast: true
}
udp.setExtraOptions(udpextraoptions, (err: BusinessError) => {
if (err) {
console.error('setExtraOptions fail');
return;
}
console.info('setExtraOptions success');
})
}) setExtraOptions(options: UDPExtraOptions): Promise<void>
设置UDPSocket连接的其他属性。使用Promise异步回调。
bind方法调用成功后,才可调用此方法。
需要权限:ohos.permission.INTERNET
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| options | UDPExtraOptions | 是 | UDPSocket连接的其他属性,参考UDPExtraOptions。 |
返回值:
| 类型 | 说明 |
|---|---|
| Promise<void> | Promise对象。无返回结果的Promise对象。 |
错误码:
以下错误码的详细介绍请参见通用错误码。
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 201 | Permission denied. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let udp: socket.UDPSocket = socket.constructUDPSocketInstance();
let bindAddr: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
udp.bind(bindAddr, (err: BusinessError) => {
if (err) {
console.error('bind fail');
return;
}
console.info('bind success');
let udpextraoptions: socket.UDPExtraOptions = {
receiveBufferSize: 8192,
sendBufferSize: 8192,
reuseAddress: false,
socketTimeout: 6000,
broadcast: true
}
udp.setExtraOptions(udpextraoptions).then(() => {
console.info('setExtraOptions success');
}).catch((err: BusinessError) => {
console.error('setExtraOptions fail');
});
}) getLocalAddress(): Promise<NetAddress>
获取UDP连接的本地Socket地址。使用Promise异步回调。
bind方法调用成功后,才可调用此方法。
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| Promise<NetAddress> | Promise对象,返回获取本地socket地址的结果。 |
错误码:
以下错误码的详细介绍请参见Socket错误码。
| 错误码ID | 错误信息 |
|---|---|
| 2300002 | System internal error. |
| 2301009 | Bad file descriptor. |
| 2303188 | Socket operation on non-socket. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let udp: socket.UDPSocket = socket.constructUDPSocketInstance();
let bindAddr: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
udp.bind(bindAddr).then(() => {
console.info('bind success');
udp.getLocalAddress().then((localAddress: socket.NetAddress) => {
console.info("UDP_Socket get SUCCESS! Address:" + JSON.stringify(localAddress));
}).catch((err: BusinessError) => {
console.error("UDP_Socket get FAILED! Error: " + JSON.stringify(err));
})
}).catch((err: BusinessError) => {
console.error('bind fail');
}); on(type: 'message', callback: Callback<SocketMessageInfo>): void
订阅UDPSocket连接的接收消息事件。使用callback异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 订阅的事件类型。'message':接收消息事件。 |
| callback | Callback<SocketMessageInfo> | 是 | 回调函数。返回订阅某类事件后UDPSocket连接成功的状态信息。 |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let udp: socket.UDPSocket = socket.constructUDPSocketInstance();
udp.on('message', (value: socket.SocketMessageInfo) => {
let messageView = '';
let uint8Array = new Uint8Array(value.message);
for (let i: number = 0; i < value.message.byteLength; i++) {
let messages = uint8Array[i];
let message = String.fromCharCode(messages);
messageView += message;
}
console.info('on message message: ' + JSON.stringify(messageView));
console.info('remoteInfo: ' + JSON.stringify(value.remoteInfo));
}); off(type: 'message', callback?: Callback<SocketMessageInfo>): void
取消订阅UDPSocket连接的接收消息事件。使用callback异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 取消订阅的事件类型。'message':接收消息事件。 |
| callback | Callback<SocketMessageInfo> | 否 | 回调函数。可以指定传入on中的callback取消对应的订阅,也可以不指定callback清空所有订阅。 |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let udp: socket.UDPSocket = socket.constructUDPSocketInstance();
let messageView = '';
let callback = (value: socket.SocketMessageInfo) => {
for (let i: number = 0; i < value.message.byteLength; i++) {
let uint8Array = new Uint8Array(value.message)
let messages = uint8Array[i]
let message = String.fromCharCode(messages);
messageView += message;
}
console.info('on message message: ' + JSON.stringify(messageView));
console.info('remoteInfo: ' + JSON.stringify(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连接的数据包消息事件或关闭事件。使用callback异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 订阅的事件类型。 - 'listening':数据包消息事件。 - 'close':关闭事件。 |
| callback | Callback<void> | 是 | 回调函数。UDPSocket连接的某类数据包消息事件或关闭事件发生变化后触发回调函数。 |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let udp: socket.UDPSocket = socket.constructUDPSocketInstance();
udp.on('listening', () => {
console.info("on listening success");
});
udp.on('close', () => {
console.info("on close success");
}); off(type: 'listening' | 'close', callback?: Callback<void>): void
取消订阅UDPSocket连接的数据包消息事件或关闭事件。使用callback异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 取消订阅事件类型。 - 'listening':数据包消息事件。 - 'close':关闭事件。 |
| callback | Callback<void> | 否 | 回调函数。可以指定传入on中的callback取消对应的订阅,也可以不指定callback清空所有订阅。 |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let udp: socket.UDPSocket = socket.constructUDPSocketInstance();
let callback1 = () => {
console.info("on listening, success");
}
udp.on('listening', callback1);
// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
udp.off('listening', callback1);
udp.off('listening');
let callback2 = () => {
console.info("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异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 订阅的事件类型。'error':error事件。 |
| callback | ErrorCallback | 是 | 回调函数。UDPSocket连接发生error事件后触发回调函数。 |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let udp: socket.UDPSocket = socket.constructUDPSocketInstance();
udp.on('error', (err: BusinessError) => {
console.error("on error, err:" + JSON.stringify(err))
}); off(type: 'error', callback?: ErrorCallback): void
取消订阅UDPSocket连接的error事件。使用callback异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 取消订阅的事件类型。'error':error事件。 |
| callback | ErrorCallback | 否 | 回调函数。可以指定传入on中的callback取消对应的订阅,也可以不指定callback清空所有订阅。 |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let udp: socket.UDPSocket = socket.constructUDPSocketInstance();
let callback = (err: BusinessError) => {
console.error("on error, err:" + JSON.stringify(err));
}
udp.on('error', callback);
// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
udp.off('error', callback);
udp.off('error'); 目标地址信息。
系统能力:SystemCapability.Communication.NetStack
| 名称 | 类型 | 只读 | 可选 | 说明 |
|---|---|---|---|---|
| address11+ | string | 否 | 否 | IP地址。 |
| port | number | 否 | 否 | 端口号 ,范围0~65535。如果不指定系统随机分配端口。 |
| family | number | 否 | 否 | 网络协议类型,可选类型: - 1:IPv4。默认为1。 - 2:IPv6。地址为IPv6类型,该字段必须被显式指定为2。 - 3:Domain(从API version 18开始支持)。地址为Domain类型,该字段必须被显式指定为3。当前仅支持TCPSocket.connect和TLSSocket.connect。 |
Socket代理信息。
系统能力:SystemCapability.Communication.NetStack
| 名称 | 类型 | 只读 | 可选 | 说明 |
|---|---|---|---|---|
| type | ProxyTypes | 否 | 否 | 代理类型。 |
| address | NetAddress | 否 | 否 | 代理地址信息。 |
| username | string | 否 | 是 | 指定用户名,如果使用用户密码验证方式。 |
| password | string | 否 | 是 | 指定密码,如果使用用户密码验证方式。 |
Socket代理类型。
系统能力:SystemCapability.Communication.NetStack
| 名称 | 值 | 说明 |
|---|---|---|
| NONE | 0 | 不使用代理。 |
| SOCKS5 | 1 | 使用Socks5代理。 |
UDPSocket发送参数。
系统能力:SystemCapability.Communication.NetStack
| 名称 | 类型 | 只读 | 可选 | 说明 |
|---|---|---|---|---|
| data | string | ArrayBuffer | 否 | 否 | 发送的数据。 |
| address | NetAddress | 否 | 否 | 目标地址信息。 |
| proxy18+ | ProxyOptions | 否 | 是 | 使用的代理信息,默认不使用代理。 |
UDPSocket连接的其他属性。继承自ExtraOptionsBase。
系统能力:SystemCapability.Communication.NetStack
| 名称 | 类型 | 只读 | 可选 | 说明 |
|---|---|---|---|---|
| broadcast | boolean | 否 | 是 | 是否可以发送广播。true表示可发送广播,false表示不可发送广播。默认为false。 |
socket连接信息
系统能力:SystemCapability.Communication.NetStack
| 名称 | 类型 | 只读 | 可选 | 说明 |
|---|---|---|---|---|
| message | ArrayBuffer | 否 | 否 | 接收的事件消息。 |
| remoteInfo | SocketRemoteInfo | 否 | 否 | socket连接信息。 |
Socket的状态信息。
系统能力:SystemCapability.Communication.NetStack
| 名称 | 类型 | 只读 | 可选 | 说明 |
|---|---|---|---|---|
| isBound | boolean | 否 | 否 | 是否绑定。true:绑定;false:不绑定。 |
| isClose | boolean | 否 | 否 | 是否关闭。true:关闭;false:打开。 |
| isConnected | boolean | 否 | 否 | 是否连接。true:连接;false:断开。 |
Socket的连接信息。
系统能力:SystemCapability.Communication.NetStack
| 名称 | 类型 | 只读 | 可选 | 说明 |
|---|---|---|---|---|
| address | string | 否 | 否 | 对端的IP地址。 |
| family | 'IPv4' | 'IPv6' | 否 | 否 | 网络协议类型,可选类型: - IPv4 - IPv6 默认为IPv4。 |
| port | number | 否 | 否 | 端口号,范围0~65535。 |
| size | number | 否 | 否 | 服务器响应信息的字节长度。 |
constructMulticastSocketInstance(): MulticastSocket
创建一个MulticastSocket对象。
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| MulticastSocket | 返回一个MulticastSocket对象。 |
示例:
import { socket } from '@kit.NetworkKit';
let multicast: socket.MulticastSocket = socket.constructMulticastSocketInstance(); MulticastSocket连接。在调用MulticastSocket的方法前,需要先通过socket.constructMulticastSocketInstance创建MulticastSocket对象。
setReuseAddress(reuse: boolean): void
设置多播Socket是否支持地址复用。使用同步方式调用。
起始版本:26.0.0
系统能力:SystemCapability.Communication.NetStack
模型约束: 此接口仅可在Stage模型下使用。
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| reuse | boolean | 是 | 是否开启地址复用。true表示开启,false表示关闭。 |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let multicast: socket.MulticastSocket = socket.constructMulticastSocketInstance();
let bindAddr: socket.NetAddress = {
// 0.0.0.0 表示绑定本机所有IPv4网络接口上的 8080 端口,常用于多播场景接收该端口的数据。
address: '0.0.0.0',
port: 8080
}
try {
multicast.setReuseAddress(true);
multicast.bind(bindAddr).then(() => {
console.info('setReuseAddress success');
}).catch((err: BusinessError) => {
console.error(`bind failed, code is ${err.code}, message is ${err.message}`);
});
} catch (err) {
let error = err as BusinessError;
console.error(`setReuseAddress failed, code is ${error.code}, message is ${error.message}`);
} addMembership(multicastAddress: NetAddress, callback: AsyncCallback<void>): void
加入多播组。使用callback异步回调。
多播使用的IP地址属于特定的范围(例如224.0.0.0到239.255.255.255)。
加入多播组后,既可以是发送端,也可以是接收端,相互之间以广播的形式传递数据,不区分客户端或服务端。
需要权限:ohos.permission.INTERNET
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| multicastAddress | NetAddress | 是 | 目标地址信息,参考NetAddress。 |
| callback | AsyncCallback<void> | 是 | 回调函数。失败返回错误码、错误信息。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 201 | Permission denied. |
| 2301022 | Invalid argument. |
| 2301088 | Not a socket. |
| 2301098 | Address in use. |
示例:
import { socket } from '@kit.NetworkKit';
let multicast: socket.MulticastSocket = socket.constructMulticastSocketInstance();
let addr: socket.NetAddress = {
address: '239.255.0.1',
port: 8080
}
multicast.addMembership(addr, (err: Object) => {
if (err) {
console.error('add membership fail, err: ' + JSON.stringify(err));
return;
}
console.info('add membership success');
}) addMembership(multicastAddress: NetAddress): Promise<void>
加入多播组。使用Promise异步回调。
多播使用的IP地址属于特定的范围(例如224.0.0.0到239.255.255.255)。
加入多播组后,既可以是发送端,也可以是接收端,相互之间以广播的形式传递数据,不区分客户端或服务端。
需要权限:ohos.permission.INTERNET
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| multicastAddress | NetAddress | 是 | 目标地址信息,参考NetAddress。 |
返回值:
| 类型 | 说明 |
|---|---|
| Promise<void> | 以Promise形式返回MulticastSocket加入多播组的行为结果。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 201 | Permission denied. |
| 2301088 | Not a socket. |
| 2301098 | Address in use. |
示例:
import { socket } from '@kit.NetworkKit';
let multicast: socket.MulticastSocket = socket.constructMulticastSocketInstance();
let addr: socket.NetAddress = {
address: '239.255.0.1',
port: 8080
}
multicast.addMembership(addr).then(() => {
console.info('addMembership success');
}).catch((err: Object) => {
console.error('addMembership fail');
}); dropMembership(multicastAddress: NetAddress, callback: AsyncCallback<void>): void
退出多播组。使用callback异步回调。
需要权限:ohos.permission.INTERNET
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| multicastAddress | NetAddress | 是 | 目标地址信息,参考NetAddress。 |
| callback | AsyncCallback<void> | 是 | 回调函数。失败返回错误码、错误信息。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 201 | Permission denied. |
| 2301088 | Not a socket. |
| 2301098 | Address in use. |
示例:
import { socket } from '@kit.NetworkKit';
let multicast: socket.MulticastSocket = socket.constructMulticastSocketInstance();
let addr: socket.NetAddress = {
address: '239.255.0.1',
port: 8080
}
multicast.dropMembership(addr, (err: Object) => {
if (err) {
console.error('drop membership fail, err: ' + JSON.stringify(err));
return;
}
console.info('drop membership success');
}) dropMembership(multicastAddress: NetAddress): Promise<void>
退出多播组。使用Promise异步回调。
需要权限:ohos.permission.INTERNET
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| multicastAddress | NetAddress | 是 | 目标地址信息,参考NetAddress。 |
返回值:
| 类型 | 说明 |
|---|---|
| Promise<void> | Promise对象。无返回结果的Promise对象。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 201 | Permission denied. |
| 2301088 | Not a socket. |
| 2301098 | Address in use. |
示例:
import { socket } from '@kit.NetworkKit';
let multicast: socket.MulticastSocket = socket.constructMulticastSocketInstance();
let addr: socket.NetAddress = {
address: '239.255.0.1',
port: 8080
}
multicast.dropMembership(addr).then(() => {
console.info('drop membership success');
}).catch((err: Object) => {
console.error('drop membership fail');
}); setMulticastTTL(ttl: number, callback: AsyncCallback<void>): void
设置多播通信时数据包在网络传输过程中路由器最大跳数。使用callback异步回调。
用于限制数据包在网络中传输时能够经过的最大路由器跳数的字段,TTL (Time to live)。
范围为 0~255,默认值为 1 。
如果一个多播数据包的 TTL 值为 1,那么它只能被直接连接到发送者的主机接收。如果 TTL 被设置为一个较大的值,那么数据包就能够被传送到更远的网络范围内。
在调用 addMembership 之后,调用此接口才有效。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| ttl | number | 是 | ttl设置数值,类型为数字number。 |
| callback | AsyncCallback<void> | 是 | 回调函数。失败返回错误码、错误信息。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 2301022 | Invalid argument. |
| 2301088 | Not a socket. |
示例:
import { socket } from '@kit.NetworkKit';
let multicast: socket.MulticastSocket = socket.constructMulticastSocketInstance();
let ttl = 8
multicast.setMulticastTTL(ttl, (err: Object) => {
if (err) {
console.error('set ttl fail, err: ' + JSON.stringify(err));
return;
}
console.info('set ttl success');
}) setMulticastTTL(ttl: number): Promise<void>
设置多播通信时数据包在网络传输过程中路由器最大跳数。使用Promise异步回调。
用于限制数据包在网络中传输时能够经过的最大路由器跳数的字段,TTL (Time to live)。
范围为 0~255,默认值为 1 。
如果一个多播数据包的 TTL 值为 1,那么它只能被直接连接到发送者的主机接收。如果 TTL 被设置为一个较大的值,那么数据包就能够被传送到更远的网络范围内。
在调用 addMembership 之后,调用此接口才有效。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| ttl | number | 是 | ttl设置数值,类型为数字Number。 |
返回值:
| 类型 | 说明 |
|---|---|
| Promise<void> | 以Promise形式返回MulticastSocket设置TTL数值的结果。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 2301022 | Invalid argument. |
| 2301088 | Not a socket. |
示例:
import { socket } from '@kit.NetworkKit';
let multicast: socket.MulticastSocket = socket.constructMulticastSocketInstance();
multicast.setMulticastTTL(8).then(() => {
console.info('set ttl success');
}).catch((err: Object) => {
console.error('set ttl failed');
}); getMulticastTTL(callback: AsyncCallback<number>): void
获取数据包在网络传输过程中路由器最大跳数(TTL)的值。使用callback异步回调。
用于限制数据包在网络中传输时能够经过的最大路由器跳数的字段,TTL (Time to live)。
范围为 0~255,默认值为 1 。
如果一个多播数据包的 TTL 值为 1,那么它只能被直接连接到发送者的主机接收。如果 TTL 被设置为一个较大的值,那么数据包就能够被传送到更远的网络范围内。
在调用 addMembership 之后,调用此接口才有效。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| callback | AsyncCallback<number> | 是 | 回调函数。失败返回错误码、错误信息。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 2301088 | Not a socket. |
示例:
import { socket } from '@kit.NetworkKit';
let multicast: socket.MulticastSocket = socket.constructMulticastSocketInstance();
multicast.getMulticastTTL((err: Object, value: Number) => {
if (err) {
console.error('set ttl fail, err: ' + JSON.stringify(err));
return;
}
console.info('set ttl success, value: ' + JSON.stringify(value));
}) getMulticastTTL(): Promise<number>
获取数据包在网络传输过程中路由器最大跳数(TTL)的值。使用Promise异步回调。
用于限制数据包在网络中传输时能够经过的最大路由器跳数的字段,TTL (Time to live)。
范围为 0~255,默认值为 1 。
如果一个多播数据包的 TTL 值为 1,那么它只能被直接连接到发送者的主机接收。如果 TTL 被设置为一个较大的值,那么数据包就能够被传送到更远的网络范围内。
在调用 addMembership 之后,调用此接口才有效。
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| Promise<number> | Promise对象,返回当前TTL数值。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 2301088 | Not a socket. |
示例:
import { socket } from '@kit.NetworkKit';
let multicast: socket.MulticastSocket = socket.constructMulticastSocketInstance();
multicast.getMulticastTTL().then((value: Number) => {
console.info('ttl: ', JSON.stringify(value));
}).catch((err: Object) => {
console.error('set ttl failed');
}); setLoopbackMode(flag: boolean, callback: AsyncCallback<void>): void
设置多播通信中的环回模式标志位。使用callback异步回调。
用于设置环回模式,开启或关闭两种状态,默认为开启状态。
如果一个多播通信中环回模式设置值为 true,那么它允许主机在本地循环接收自己发送的多播数据包。如果为 false,则主机不会接收到自己发送的多播数据包。
在调用 addMembership 之后,调用此接口才有效。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| flag | boolean | 是 | 是否开启环回模式。true表示环回模式开启,false表示环回模式关闭。 |
| callback | AsyncCallback<void> | 是 | 回调函数。失败返回错误码、错误信息。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 2301088 | Not a socket. |
示例:
import { socket } from '@kit.NetworkKit';
let multicast: socket.MulticastSocket = socket.constructMulticastSocketInstance();
multicast.setLoopbackMode(false, (err: Object) => {
if (err) {
console.error('set loopback mode fail, err: ' + JSON.stringify(err));
return;
}
console.info('set loopback mode success');
}) setLoopbackMode(flag: boolean): Promise<void>
设置多播通信中的环回模式标志位。使用Promise异步回调。
用于设置环回模式,开启或关闭两种状态,默认为开启状态。
如果一个多播通信中环回模式设置值为 true,那么它允许主机在本地循环接收自己发送的多播数据包。如果为 false,则主机不会接收到自己发送的多播数据包。
在调用 addMembership 之后,调用此接口才有效。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| flag | boolean | 是 | 是否开启环回模式。true表示环回模式开启,false表示环回模式关闭。 |
返回值:
| 类型 | 说明 |
|---|---|
| Promise<void> | 以Promise形式返回MulticastSocket设置环回模式的结果。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 2301088 | Not a socket. |
示例:
import { socket } from '@kit.NetworkKit';
let multicast: socket.MulticastSocket = socket.constructMulticastSocketInstance();
multicast.setLoopbackMode(false).then(() => {
console.info('set loopback mode success');
}).catch((err: Object) => {
console.error('set loopback mode failed');
}); getLoopbackMode(callback: AsyncCallback<boolean>): void
获取多播通信中的环回模式状态。使用callback异步回调。
用于获取当前环回模式开启或关闭的状态。
如果获取的属性值为 true,表示环回模式是开启的状态,允许主机在本地循环接收自己发送的多播数据包。如果为 false,则表示环回模式是关闭的状态,主机不会接收到自己发送的多播数据包。
在调用 addMembership 之后,调用此接口才有效。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| callback | AsyncCallback<boolean> | 是 | 回调函数。返回值为环回模式状态,true表示环回模式开启,false表示环回模式关闭。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 2301088 | Not a socket. |
示例:
import { socket } from '@kit.NetworkKit';
let multicast: socket.MulticastSocket = socket.constructMulticastSocketInstance();
multicast.getLoopbackMode((err: Object, value: Boolean) => {
if (err) {
console.error('get loopback mode fail, err: ' + JSON.stringify(err));
return;
}
console.info('get loopback mode success, value: ' + JSON.stringify(value));
}) getLoopbackMode(): Promise<boolean>
获取多播通信中的环回模式状态。使用Promise异步回调。
用于获取当前环回模式开启或关闭的状态。
如果获取的属性值为 true,表示环回模式是开启的状态,允许主机在本地循环接收自己发送的多播数据包。如果为 false,则表示环回模式是关闭的状态,主机不会接收到自己发送的多播数据包。
在调用 addMembership 之后,调用此接口才有效。
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| Promise<boolean> | Promise对象。返回true表示环回模式开启,返回false表示环回模式关闭。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 2301088 | Not a socket. |
示例:
import { socket } from '@kit.NetworkKit';
let multicast: socket.MulticastSocket = socket.constructMulticastSocketInstance();
multicast.getLoopbackMode().then((value: Boolean) => {
console.info('loopback mode: ', JSON.stringify(value));
}).catch((err: Object) => {
console.error('get loopback mode failed');
}); getSocketFd(): Promise<number>
获取MulticastSocket的文件描述符。使用Promise异步回调。
需要权限:ohos.permission.INTERNET
系统能力:SystemCapability.Communication.NetStack
模型约束: 此接口仅可在Stage模型下使用。
返回值:
| 类型 | 说明 |
|---|---|
| Promise<number> | Promise对象,返回Socket的文件描述符。 |
错误码:
以下错误码的详细介绍请参见通用错误码。
| 错误码ID | 错误信息 |
|---|---|
| 201 | Permission denied. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let multicast: socket.MulticastSocket = socket.constructMulticastSocketInstance();
let bindAddr: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
multicast.bind(bindAddr)
.then(() => {
console.info('bind success');
multicast.getSocketFd().then((fd: number) => {
console.info(`Socket FD:${fd}`);
}).catch((err: BusinessError) => {
console.error(`getSocketFd fail: ${err.message}, errorCode: ${err.code}`);
});
}).catch((err: BusinessError) => {
console.error('bind fail');
}); constructTCPSocketInstance(): TCPSocket
创建一个TCPSocket对象。
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| TCPSocket | 返回一个TCPSocket对象。 |
示例:
import { socket } from '@kit.NetworkKit';
let tcp: socket.TCPSocket = socket.constructTCPSocketInstance(); bind(address: NetAddress, callback: AsyncCallback<void>): void
绑定IP地址和端口,端口可以指定为0由系统随机分配或由用户指定为其它非0端口。使用callback异步回调。
bind方法如果因为端口冲突而执行失败,则会由系统随机分配端口号。
TCP客户端可先调用该接口(tcp.bind)显式绑定IP地址和端口号,再调用tcp.connect完成与服务端的连接;也可直接调用tcp.connect由系统自动绑定IP地址和端口号,完成与服务端的连接。
bind的IP为'localhost'或'127.0.0.1'时,只允许本地回环接口的连接,即服务端和客户端运行在同一台机器上。
需要权限:ohos.permission.INTERNET
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| address | NetAddress | 是 | 本端地址信息,参考NetAddress。 |
| callback | AsyncCallback<void> | 是 | 回调函数。失败返回错误、错误信息。 |
错误码:
以下错误码的详细介绍请参见通用错误码。
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 201 | Permission denied. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tcp: socket.TCPSocket = socket.constructTCPSocketInstance();
let bindAddr: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
tcp.bind(bindAddr, (err: BusinessError) => {
if (err) {
console.error('bind fail');
return;
}
console.info('bind success');
}) bind(address: NetAddress): Promise<void>
绑定IP地址和端口,端口可以指定为0由系统随机分配或由用户指定为其它非0端口。使用Promise异步回调。
bind方法如果因为端口冲突而执行失败,则会由系统随机分配端口号。
TCP客户端可先调用该接口(tcp.bind)显式绑定IP地址和端口号,再调用tcp.connect完成与服务端的连接;也可直接调用tcp.connect由系统自动绑定IP地址和端口号,完成与服务端的连接。
bind的IP为'localhost'或'127.0.0.1'时,只允许本地回环接口的连接,即服务端和客户端运行在同一台机器上。
需要权限:ohos.permission.INTERNET
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| address | NetAddress | 是 | 本端地址信息,参考NetAddress。 |
返回值:
| 类型 | 说明 |
|---|---|
| Promise<void> | 以Promise形式返回TCPSocket绑定本机的IP地址和端口的结果。 |
错误码:
以下错误码的详细介绍请参见通用错误码。
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 201 | Permission denied. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tcp: socket.TCPSocket = socket.constructTCPSocketInstance();
let bindAddr: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
tcp.bind(bindAddr).then(() => {
console.info('bind success');
}).catch((err: BusinessError) => {
console.error('bind fail');
}); connect(options: TCPConnectOptions, callback: AsyncCallback<void>): void
连接到指定的IP地址和端口。使用callback异步回调。
在没有执行tcp.bind的情况下,也可以直接调用该接口完成与TCP服务端的连接
需要权限:ohos.permission.INTERNET
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| options | TCPConnectOptions | 是 | TCPSocket连接的参数,参考TCPConnectOptions。 |
| callback | AsyncCallback<void> | 是 | 回调函数。失败返回错误码、错误信息。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 201 | Permission denied. |
| 2301206 | Socks5 failed to connect to the proxy server. 适用版本:18+ |
| 2301207 | Socks5 username or password is invalid. 适用版本:18+ |
| 2301208 | Socks5 failed to connect to the remote server. 适用版本:18+ |
| 2301209 | Socks5 failed to negotiate the authentication method. 适用版本:18+ |
| 2301210 | Socks5 failed to send the message. 适用版本:18+ |
| 2301211 | Socks5 failed to receive the message. 适用版本:18+ |
| 2301212 | Socks5 serialization error. 适用版本:18+ |
| 2301213 | Socks5 deserialization error. 适用版本:18+ |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tcp: socket.TCPSocket = socket.constructTCPSocketInstance();
let netAddress: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let tcpconnectoptions: socket.TCPConnectOptions = {
address: netAddress,
timeout: 6000
}
tcp.connect(tcpconnectoptions, (err: BusinessError) => {
if (err) {
console.error('connect fail');
return;
}
console.info('connect success');
}) 示例(设置socket代理):
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tcp: socket.TCPSocket = socket.constructTCPSocketInstance();
let netAddress: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let socks5Server: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let proxyOptions: socket.ProxyOptions = {
type : 1,
address: socks5Server,
username: "xxx",
password: "xxx"
}
let tcpconnectoptions: socket.TCPConnectOptions = {
address: netAddress,
timeout: 6000,
proxy: proxyOptions,
}
tcp.connect(tcpconnectoptions, (err: BusinessError) => {
if (err) {
console.error('connect fail');
return;
}
console.info('connect success');
}) connect(options: TCPConnectOptions): Promise<void>
连接到指定的IP地址和端口。使用Promise异步回调。
在没有执行tcp.bind的情况下,也可以直接调用该接口完成与TCP服务端的连接。
需要权限:ohos.permission.INTERNET
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| options | TCPConnectOptions | 是 | TCPSocket连接的参数,参考TCPConnectOptions。 |
返回值:
| 类型 | 说明 |
|---|---|
| Promise<void> | 以Promise形式返回TCPSocket连接到指定的IP地址和端口的结果。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 201 | Permission denied. |
| 2301206 | Socks5 failed to connect to the proxy server. 适用版本:18+ |
| 2301207 | Socks5 username or password is invalid. 适用版本:18+ |
| 2301208 | Socks5 failed to connect to the remote server. 适用版本:18+ |
| 2301209 | Socks5 failed to negotiate the authentication method. 适用版本:18+ |
| 2301210 | Socks5 failed to send the message. 适用版本:18+ |
| 2301211 | Socks5 failed to receive the message. 适用版本:18+ |
| 2301212 | Socks5 serialization error. 适用版本:18+ |
| 2301213 | Socks5 deserialization error. 适用版本:18+ |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tcp: socket.TCPSocket = socket.constructTCPSocketInstance();
let netAddress: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let tcpconnectoptions: socket.TCPConnectOptions = {
address: netAddress,
timeout: 6000
}
tcp.connect(tcpconnectoptions).then(() => {
console.info('connect success')
}).catch((err: BusinessError) => {
console.error('connect fail');
}); 示例(设置socket代理):
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tcp: socket.TCPSocket = socket.constructTCPSocketInstance();
let netAddress: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let socks5Server: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let proxyOptions: socket.ProxyOptions = {
type : 1,
address: socks5Server,
username: "xxx",
password: "xxx"
}
let tcpconnectoptions: socket.TCPConnectOptions = {
address: netAddress,
timeout: 6000,
proxy: proxyOptions,
}
tcp.connect(tcpconnectoptions).then(() => {
console.info('connect success')
}).catch((err: BusinessError) => {
console.error('connect fail');
}); send(options: TCPSendOptions, callback: AsyncCallback<void>): void
通过TCPSocket连接发送数据。使用callback异步回调。
connect方法调用成功后,才可调用此方法。该接口为耗时操作,请在Worker线程或taskpool线程调用该接口。
需要权限:ohos.permission.INTERNET
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| options | TCPSendOptions | 是 | TCPSocket发送请求的参数,参考TCPSendOptions。 |
| callback | AsyncCallback<void> | 是 | 回调函数。失败返回错误码、错误信息。 |
错误码:
以下错误码的详细介绍请参见通用错误码。
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 201 | Permission denied. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tcp: socket.TCPSocket = socket.constructTCPSocketInstance();
let netAddress: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let tcpconnectoptions: socket.TCPConnectOptions = {
address: netAddress,
timeout: 6000
}
tcp.connect(tcpconnectoptions, () => {
console.info('connect success');
let tcpSendOptions: socket.TCPSendOptions = {
data: 'Hello, server!'
}
tcp.send(tcpSendOptions, (err: BusinessError) => {
if (err) {
console.error('send fail');
return;
}
console.info('send success');
})
}) send(options: TCPSendOptions): Promise<void>
通过TCPSocket连接发送数据。使用Promise异步回调。
connect方法调用成功后,才可调用此方法。该接口为耗时操作,请在Worker线程或taskpool线程调用该接口。
需要权限:ohos.permission.INTERNET
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| options | TCPSendOptions | 是 | TCPSocket发送请求的参数,参考TCPSendOptions。 |
返回值:
| 类型 | 说明 |
|---|---|
| Promise<void> | Promise对象。无返回结果的Promise对象。 |
错误码:
以下错误码的详细介绍请参见通用错误码。
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 201 | Permission denied. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tcp: socket.TCPSocket = socket.constructTCPSocketInstance();
let netAddress: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let tcpconnectoptions: socket.TCPConnectOptions = {
address: netAddress,
timeout: 6000
}
tcp.connect(tcpconnectoptions, () => {
console.info('connect success');
let tcpSendOptions: socket.TCPSendOptions = {
data: 'Hello, server!'
}
tcp.send(tcpSendOptions).then(() => {
console.info('send success');
}).catch((err: BusinessError) => {
console.error('send fail');
});
}) close(callback: AsyncCallback<void>): void
关闭TCPSocket连接。使用callback异步回调。
需要权限:ohos.permission.INTERNET
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| callback | AsyncCallback<void> | 是 | 回调函数。失败返回错误码、错误信息。 |
错误码:
以下错误码的详细介绍请参见通用错误码。
| 错误码ID | 错误信息 |
|---|---|
| 201 | Permission denied. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tcp: socket.TCPSocket = socket.constructTCPSocketInstance();
tcp.close((err: BusinessError) => {
if (err) {
console.error('close fail');
return;
}
console.info('close success');
}) close(): Promise<void>
关闭TCPSocket连接。使用Promise异步回调。
需要权限:ohos.permission.INTERNET
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| Promise<void> | Promise对象。无返回结果的Promise对象。 |
错误码:
以下错误码的详细介绍请参见通用错误码。
| 错误码ID | 错误信息 |
|---|---|
| 201 | Permission denied. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tcp: socket.TCPSocket = socket.constructTCPSocketInstance();
tcp.close().then(() => {
console.info('close success');
}).catch((err: BusinessError) => {
console.error('close fail');
}); getRemoteAddress(callback: AsyncCallback<NetAddress>): void
获取对端Socket地址。使用callback异步回调。
connect方法调用成功后,才可调用此方法。
需要权限:ohos.permission.INTERNET
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| callback | AsyncCallback<NetAddress> | 是 | 回调函数。成功时返回对端Socket地址,失败时返回错误码、错误信息。 |
错误码:
以下错误码的详细介绍请参见通用错误码。
| 错误码ID | 错误信息 |
|---|---|
| 201 | Permission denied. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tcp: socket.TCPSocket = socket.constructTCPSocketInstance();
let netAddress: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let tcpconnectoptions: socket.TCPConnectOptions = {
address: netAddress,
timeout: 6000
}
tcp.connect(tcpconnectoptions, () => {
console.info('connect success');
tcp.getRemoteAddress((err: BusinessError, data: socket.NetAddress) => {
if (err) {
console.error('getRemoteAddressfail');
return;
}
console.info('getRemoteAddresssuccess:' + JSON.stringify(data));
})
}); getRemoteAddress(): Promise<NetAddress>
获取对端Socket地址。使用Promise异步回调。
connect方法调用成功后,才可调用此方法。
需要权限:ohos.permission.INTERNET
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| Promise<NetAddress> | Promise对象,返回获取对端socket地址的结果。 |
错误码:
以下错误码的详细介绍请参见通用错误码。
| 错误码ID | 错误信息 |
|---|---|
| 201 | Permission denied. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tcp: socket.TCPSocket = socket.constructTCPSocketInstance();
let netAddress: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let tcpconnectoptions: socket.TCPConnectOptions = {
address: netAddress,
timeout: 6000
}
tcp.connect(tcpconnectoptions).then(() => {
console.info('connect success');
tcp.getRemoteAddress().then(() => {
console.info('getRemoteAddress success');
}).catch((err: BusinessError) => {
console.error('getRemoteAddressfail');
});
}).catch((err: BusinessError) => {
console.error('connect fail');
}); getState(callback: AsyncCallback<SocketStateBase>): void
获取TCPSocket状态。使用callback异步回调。
bind或connect方法调用成功后,才可调用此方法。
需要权限:ohos.permission.INTERNET
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| callback | AsyncCallback<SocketStateBase> | 是 | 回调函数。成功时获取TCPSocket状态,失败时返回错误码、错误信息。 |
错误码:
以下错误码的详细介绍请参见通用错误码。
| 错误码ID | 错误信息 |
|---|---|
| 201 | Permission denied. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tcp: socket.TCPSocket = socket.constructTCPSocketInstance();
let netAddress: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let tcpconnectoptions: socket.TCPConnectOptions = {
address: netAddress,
timeout: 6000
}
tcp.connect(tcpconnectoptions, () => {
console.info('connect success');
tcp.getState((err: BusinessError, data: socket.SocketStateBase) => {
if (err) {
console.error('getState fail');
return;
}
console.info('getState success:' + JSON.stringify(data));
});
}); getState(): Promise<SocketStateBase>
获取TCPSocket状态。使用Promise异步回调。
bind或connect方法调用成功后,才可调用此方法。
需要权限:ohos.permission.INTERNET
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| Promise<SocketStateBase> | Promise对象,返回获取TCPSocket状态的结果。 |
错误码:
以下错误码的详细介绍请参见通用错误码。
| 错误码ID | 错误信息 |
|---|---|
| 201 | Permission denied. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tcp: socket.TCPSocket = socket.constructTCPSocketInstance();
let netAddress: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let tcpconnectoptions: socket.TCPConnectOptions = {
address: netAddress,
timeout: 6000
}
tcp.connect(tcpconnectoptions).then(() => {
console.info('connect success');
tcp.getState().then(() => {
console.info('getState success');
}).catch((err: BusinessError) => {
console.error('getState fail');
});
}).catch((err: BusinessError) => {
console.error('connect fail');
}); getSocketFd(callback: AsyncCallback<number>): void
获取TCPSocket的文件描述符。使用callback异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| callback | AsyncCallback<number> | 是 | 回调函数,当成功时,返回socket的文件描述符,失败时,返回undefined。 |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tcp: socket.TCPSocket = socket.constructTCPSocketInstance();
let bindAddr: socket.NetAddress = {
address: '192.168.xx.xxx',
// 绑定指定网络接口
}
tcp.bind(bindAddr)
let netAddress: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let tcpconnectoptions: socket.TCPConnectOptions = {
address: netAddress,
timeout: 6000
}
tcp.connect(tcpconnectoptions)
tcp.getSocketFd((err: BusinessError, data: number) => {
console.error("getSocketFd failed: " + err);
console.info("socketFd: " + data);
}) getSocketFd(): Promise<number>
获取TCPSocket的文件描述符。使用Promise异步回调。
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| Promise<number> | Promise对象,返回socket的文件描述符。 |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tcp: socket.TCPSocket = socket.constructTCPSocketInstance();
let bindAddr: socket.NetAddress = {
address: '192.168.xx.xxx',
// 绑定指定网络接口
}
tcp.bind(bindAddr)
let netAddress: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let tcpconnectoptions: socket.TCPConnectOptions = {
address: netAddress,
timeout: 6000
}
tcp.connect(tcpconnectoptions)
tcp.getSocketFd().then((data: number) => {
console.info("socketFd: " + data);
}) setExtraOptions(options: TCPExtraOptions, callback: AsyncCallback<void>): void
设置TCPSocket连接的其他属性。使用callback异步回调。
bind或connect方法调用成功后,才可调用此方法。
需要权限:ohos.permission.INTERNET
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| options | TCPExtraOptions | 是 | TCPSocket连接的其他属性,参考TCPExtraOptions。 |
| callback | AsyncCallback<void> | 是 | 回调函数。失败时返回错误码、错误信息。 |
错误码:
以下错误码的详细介绍请参见通用错误码。
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 201 | Permission denied. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tcp: socket.TCPSocket = socket.constructTCPSocketInstance();
let netAddress: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let tcpconnectoptions: socket.TCPConnectOptions = {
address: netAddress,
timeout: 6000
}
interface SocketLinger {
on: boolean;
linger: number;
}
tcp.connect(tcpconnectoptions, () => {
console.info('connect success');
let tcpExtraOptions: socket.TCPExtraOptions = {
keepAlive: true,
OOBInline: true,
TCPNoDelay: true,
socketLinger: { on: true, linger: 10 } as SocketLinger,
receiveBufferSize: 8192,
sendBufferSize: 8192,
reuseAddress: true,
socketTimeout: 3000,
tcpFastOpen: false
}
tcp.setExtraOptions(tcpExtraOptions, (err: BusinessError) => {
if (err) {
console.error('setExtraOptions fail');
return;
}
console.info('setExtraOptions success');
});
}); setExtraOptions(options: TCPExtraOptions): Promise<void>
设置TCPSocket连接的其他属性。使用Promise异步回调。
bind或connect方法调用成功后,才可调用此方法。
需要权限:ohos.permission.INTERNET
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| options | TCPExtraOptions | 是 | TCPSocket连接的其他属性,参考TCPExtraOptions。 |
返回值:
| 类型 | 说明 |
|---|---|
| Promise<void> | Promise对象。无返回结果的Promise对象。 |
错误码:
以下错误码的详细介绍请参见通用错误码。
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 201 | Permission denied. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tcp: socket.TCPSocket = socket.constructTCPSocketInstance();
let netAddress: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let tcpconnectoptions: socket.TCPConnectOptions = {
address: netAddress,
timeout: 6000
}
interface SocketLinger {
on: boolean;
linger: number;
}
tcp.connect(tcpconnectoptions, () => {
console.info('connect success');
let tcpExtraOptions: socket.TCPExtraOptions = {
keepAlive: true,
OOBInline: true,
TCPNoDelay: true,
socketLinger: { on: true, linger: 10 } as SocketLinger,
receiveBufferSize: 8192,
sendBufferSize: 8192,
reuseAddress: true,
socketTimeout: 3000,
tcpFastOpen: false
}
tcp.setExtraOptions(tcpExtraOptions).then(() => {
console.info('setExtraOptions success');
}).catch((err: BusinessError) => {
console.error('setExtraOptions fail');
});
}); getLocalAddress(): Promise<NetAddress>
获取TCPSocket的本地Socket地址。使用Promise异步回调。
bind方法调用成功后,才可调用此方法。
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| Promise<NetAddress> | 以Promise形式返回获取本地socket地址的结果。 |
错误码:
以下错误码的详细介绍请参见Socket错误码。
| 错误码ID | 错误信息 |
|---|---|
| 2300002 | System internal error. |
| 2301009 | Bad file descriptor. |
| 2303188 | Socket operation on non-socket. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tcp: socket.TCPSocket = socket.constructTCPSocketInstance();
let bindAddr: socket.NetAddress = {
address: '192.168.xx.xxx',
family: 1,
port: 8080
}
tcp.bind(bindAddr).then(() => {
tcp.getLocalAddress().then((localAddress: socket.NetAddress) => {
console.info("SUCCESS! Address:" + JSON.stringify(localAddress));
}).catch((err: BusinessError) => {
console.error("FAILED! Error:" + JSON.stringify(err));
})
}).catch((err: BusinessError) => {
console.error('bind fail');
}); on(type: 'message', callback: Callback<SocketMessageInfo>): void
订阅TCPSocket连接的接收消息事件。使用callback异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 订阅的事件类型。'message':接收消息事件。 |
| callback | Callback<SocketMessageInfo> | 是 | 回调函数。返回TCPSocket连接信息。 |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tcp: socket.TCPSocket = socket.constructTCPSocketInstance();
tcp.on('message', (value: socket.SocketMessageInfo) => {
let messageView = '';
let uint8Array = new Uint8Array(value.message);
for (let i: number = 0; i < value.message.byteLength; i++) {
let messages = uint8Array[i];
let message = String.fromCharCode(messages);
messageView += message;
}
console.info('on message message: ' + JSON.stringify(messageView));
console.info('remoteInfo: ' + JSON.stringify(value.remoteInfo));
}); off(type: 'message', callback?: Callback<SocketMessageInfo>): void
取消订阅TCPSocket连接的接收消息事件。使用callback异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 取消订阅的事件类型。'message':接收消息事件。 |
| callback | Callback<SocketMessageInfo> | 否 | 回调函数。可以指定传入on中的callback取消对应的订阅,也可以不指定callback清空所有订阅。 |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tcp: socket.TCPSocket = socket.constructTCPSocketInstance();
let messageView = '';
let callback = (value: socket.SocketMessageInfo) => {
for (let i: number = 0; i < value.message.byteLength; i++) {
let uint8Array = new Uint8Array(value.message)
let messages = uint8Array[i]
let message = String.fromCharCode(messages);
messageView += message;
}
console.info('on message message: ' + JSON.stringify(messageView));
console.info('remoteInfo: ' + JSON.stringify(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的连接事件或关闭事件。使用callback异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 订阅的事件类型。 - 'connect':连接事件。 - 'close':关闭事件。 |
| callback | Callback<void> | 是 | 回调函数。TCPSocket的连接事件或关闭事件触发时调用回调函数。 |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tcp: socket.TCPSocket = socket.constructTCPSocketInstance();
tcp.on('connect', () => {
console.info("on connect success")
});
tcp.on('close', () => {
console.info("on close success")
}); off(type: 'connect' | 'close', callback?: Callback<void>): void
取消订阅TCPSocket的连接事件或关闭事件。使用callback异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 取消订阅的事件类型。 - 'connect':连接事件。 - 'close':关闭事件。 |
| callback | Callback<void> | 否 | 回调函数。可以指定传入on中的callback取消对应的订阅,也可以不指定callback清空所有订阅。 |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tcp: socket.TCPSocket = socket.constructTCPSocketInstance();
let callback1 = () => {
console.info("on connect success");
}
tcp.on('connect', callback1);
// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
tcp.off('connect', callback1);
tcp.off('connect');
let callback2 = () => {
console.info("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异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 订阅的事件类型。'error':error事件。 |
| callback | ErrorCallback | 是 | 回调函数。TCPSocket连接订阅的某类error事件触发时调用回调函数。 |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tcp: socket.TCPSocket = socket.constructTCPSocketInstance();
tcp.on('error', (err: BusinessError) => {
console.error("on error, err:" + JSON.stringify(err))
}); off(type: 'error', callback?: ErrorCallback): void
取消订阅TCPSocket连接的error事件。使用callback异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 取消订阅的事件类型。'error':error事件。 |
| callback | ErrorCallback | 否 | 回调函数。可以指定传入on中的callback取消对应的订阅,也可以不指定callback清空所有订阅。 |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tcp: socket.TCPSocket = socket.constructTCPSocketInstance();
let callback = (err: BusinessError) => {
console.error("on error, err:" + JSON.stringify(err));
}
tcp.on('error', callback);
// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
tcp.off('error', callback);
tcp.off('error'); TCPSocket连接的参数。
系统能力:SystemCapability.Communication.NetStack
| 名称 | 类型 | 只读 | 可选 | 说明 |
|---|---|---|---|---|
| address | NetAddress | 否 | 否 | 绑定的地址以及端口。 |
| timeout | number | 否 | 是 | 超时时间,单位毫秒(ms)。默认值为5000。 |
| proxy18+ | ProxyOptions | 否 | 是 | 使用的代理信息,默认不使用代理。 |
TCPSocket发送请求的参数。
系统能力:SystemCapability.Communication.NetStack
| 名称 | 类型 | 只读 | 可选 | 说明 |
|---|---|---|---|---|
| data | string| ArrayBuffer | 否 | 否 | 发送的数据。 |
| encoding | string | 否 | 是 | 字符编码(UTF-8,UTF-16BE,UTF-16LE,UTF-16,US-ASCII,ISO-8859-1),默认为UTF-8。 |
TCPSocket连接的其他属性。继承自ExtraOptionsBase。
系统能力:SystemCapability.Communication.NetStack
| 名称 | 类型 | 只读 | 可选 | 说明 |
|---|---|---|---|---|
| keepAlive | boolean | 否 | 是 | 是否保持连接。默认为false。true:保持连接;false:断开连接。 |
| OOBInline | boolean | 否 | 是 | 是否为OOB内联。默认为false。true:是OOB内联;false:不是OOB内联。 |
| TCPNoDelay | boolean | 否 | 是 | TCPSocket连接是否无时延。默认为false。true:无时延;false:有时延。 |
| socketLinger | {on:boolean, linger:number} | 否 | 是 | socket是否继续逗留。 - on:是否逗留(true:逗留;false:不逗留)。 - linger:逗留时长,单位毫秒(ms),取值范围为0~65535。 当入参on设置为true时,才需要设置。 |
| tcpFastOpen24+ | boolean | 否 | 是 | 是否在TCPSocket连接中启用TCP快速打开(TCP Fast OPen, TFO),该功能允许客户端在首次握手时携带数据,从而减少连接建立的延迟,提升高频率短连接场景下的性能表现。默认为false。true:支持快速打开属性;false:不支持快速打开属性。 当前参数只支持客户端配置。 模型约束: 此接口仅可在Stage模型下使用。 |
constructTCPSocketServerInstance(): TCPSocketServer
创建一个TCPSocketServer对象。
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| TCPSocketServer | 返回一个TCPSocketServer对象。 |
示例:
import { socket } from '@kit.NetworkKit';
let tcpServer: socket.TCPSocketServer = socket.constructTCPSocketServerInstance(); TCPSocketServer连接。在调用TCPSocketServer的方法前,需要先通过socket.constructTCPSocketServerInstance创建TCPSocketServer对象。
listen(address: NetAddress, callback: AsyncCallback<void>): void
绑定IP地址和端口,端口可以指定或由系统随机分配。监听并接受与此套接字建立的TCPSocket连接。该接口使用多线程并发处理客户端的数据。使用callback异步回调。
服务端使用该方法完成bind,listen,accept操作,bind方法失败会由系统随机分配端口号。
需要权限:ohos.permission.INTERNET
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| address | NetAddress | 是 | 目标地址信息。 |
| callback | AsyncCallback<void> | 是 | 回调函数。失败时返回错误码、错误信息。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 201 | Permission denied. |
| 2300002 | System internal error. |
| 2303109 | Bad file number. |
| 2303111 | Resource temporarily unavailable. Try again. |
| 2303198 | Address already in use. |
| 2303199 | Cannot assign requested address. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tcpServer: socket.TCPSocketServer = socket.constructTCPSocketServerInstance();
let listenAddr: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080,
family: 1
}
tcpServer.listen(listenAddr, (err: BusinessError) => {
if (err) {
console.error("listen fail");
return;
}
console.info("listen success");
}) listen(address: NetAddress): Promise<void>
绑定IP地址和端口,端口可以指定或由系统随机分配。监听并接受与此套接字建立的TCPSocket连接。该接口使用多线程并发处理客户端的数据。使用Promise异步回调。
服务端使用该方法完成bind,listen,accept操作,bind方法失败会由系统随机分配端口号。
需要权限:ohos.permission.INTERNET
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| address | NetAddress | 是 | 目标地址信息。 |
返回值:
| 类型 | 说明 |
|---|---|
| Promise<void> | Promise对象。无返回结果的Promise对象。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 201 | Permission denied. |
| 2300002 | System internal error. |
| 2303109 | Bad file number. |
| 2303111 | Resource temporarily unavailable. Try again. |
| 2303198 | Address already in use. |
| 2303199 | Cannot assign requested address. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tcpServer: socket.TCPSocketServer = socket.constructTCPSocketServerInstance();
let listenAddr: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080,
family: 1
}
tcpServer.listen(listenAddr).then(() => {
console.info('listen success');
}).catch((err: BusinessError) => {
console.error('listen fail');
}); getState(callback: AsyncCallback<SocketStateBase>): void
获取TCPSocketServer状态。使用callback异步回调。
listen方法调用成功后,才可调用此方法。
需要权限:ohos.permission.INTERNET
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| callback | AsyncCallback<SocketStateBase> | 是 | 回调函数。失败时返回错误码、错误信息。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 201 | Permission denied. |
| 2300002 | System internal error. |
| 2303188 | Socket operation on non-socket. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tcpServer: socket.TCPSocketServer = socket.constructTCPSocketServerInstance();
let listenAddr: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080,
family: 1
}
tcpServer.listen(listenAddr, (err: BusinessError) => {
if (err) {
console.error("listen fail");
return;
}
console.info("listen success");
})
tcpServer.getState((err: BusinessError, data: socket.SocketStateBase) => {
if (err) {
console.error('getState fail');
return;
}
console.info('getState success:' + JSON.stringify(data));
}) getState(): Promise<SocketStateBase>
获取TCPSocketServer状态。使用Promise异步回调。
listen方法调用成功后,才可调用此方法。
需要权限:ohos.permission.INTERNET
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| Promise<SocketStateBase> | Promise对象,返回获取TCPSocket状态的结果。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 201 | Permission denied. |
| 2300002 | System internal error. |
| 2303188 | Socket operation on non-socket. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tcpServer: socket.TCPSocketServer = socket.constructTCPSocketServerInstance();
let listenAddr: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080,
family: 1
}
tcpServer.listen(listenAddr, (err: BusinessError) => {
if (err) {
console.error("listen fail");
return;
}
console.info("listen success");
})
tcpServer.getState().then((data: socket.SocketStateBase) => {
console.info('getState success' + JSON.stringify(data));
}).catch((err: BusinessError) => {
console.error('getState fail');
}); getSocketFd(): Promise<number>
获取TCPSocketServer监听端口绑定的文件描述符。使用Promise异步回调。
需要权限:ohos.permission.INTERNET
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| Promise<number> | Promise对象,返回Socket的文件描述符。 |
错误码:
以下错误码的详细介绍请参见通用错误码。
| 错误码ID | 错误信息 |
|---|---|
| 201 | Permission denied. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tcpServer: socket.TCPSocketServer = socket.constructTCPSocketServerInstance();
let listenAddr: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080,
family: 1
}
tcpServer.listen(listenAddr).then(() => {
console.info('listen success');
tcpServer.getSocketFd().then((fd: number) => {
console.info(`Socket FD:${fd}`);
}).catch((err: BusinessError) => {
console.error(`getSocketFd fail: ${err.message}, errorCode: ${err.code}`);
});
}).catch((err: BusinessError) => {
console.error('listen fail');
}); setExtraOptions(options: TCPExtraOptions, callback: AsyncCallback<void>): void
设置TCPSocketServer连接的其他属性。使用callback异步回调。
listen方法调用成功后,才可调用此方法。
需要权限:ohos.permission.INTERNET
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| options | TCPExtraOptions | 是 | TCPSocketServer连接的其他属性。 |
| callback | AsyncCallback<void> | 是 | 回调函数。失败时返回错误码、错误信息。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 201 | Permission denied. |
| 2300002 | System internal error. |
| 2303188 | Socket operation on non-socket. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tcpServer: socket.TCPSocketServer = socket.constructTCPSocketServerInstance();
let listenAddr: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080,
family: 1
}
tcpServer.listen(listenAddr, (err: BusinessError) => {
if (err) {
console.error("listen fail");
return;
}
console.info("listen success");
})
interface SocketLinger {
on: boolean;
linger: number;
}
let tcpExtraOptions: socket.TCPExtraOptions = {
keepAlive: true,
OOBInline: true,
TCPNoDelay: true,
socketLinger: { on: true, linger: 10 } as SocketLinger,
receiveBufferSize: 8192,
sendBufferSize: 8192,
reuseAddress: true,
socketTimeout: 3000
}
tcpServer.setExtraOptions(tcpExtraOptions, (err: BusinessError) => {
if (err) {
console.error('setExtraOptions fail');
return;
}
console.info('setExtraOptions success');
}); setExtraOptions(options: TCPExtraOptions): Promise<void>
设置TCPSocketServer连接的其他属性。使用Promise异步回调。
listen方法调用成功后,才可调用此方法。
需要权限:ohos.permission.INTERNET
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| options | TCPExtraOptions | 是 | TCPSocketServer连接的其他属性。 |
返回值:
| 类型 | 说明 |
|---|---|
| Promise<void> | Promise对象。无返回结果的Promise对象。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 201 | Permission denied. |
| 2300002 | System internal error. |
| 2303188 | Socket operation on non-socket. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tcpServer: socket.TCPSocketServer = socket.constructTCPSocketServerInstance();
let listenAddr: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080,
family: 1
}
interface SocketLinger {
on: boolean;
linger: number;
}
tcpServer.listen(listenAddr, (err: BusinessError) => {
if (err) {
console.error("listen fail");
return;
}
console.info("listen success");
})
let tcpExtraOptions: socket.TCPExtraOptions = {
keepAlive: true,
OOBInline: true,
TCPNoDelay: true,
socketLinger: { on: true, linger: 10 } as SocketLinger,
receiveBufferSize: 8192,
sendBufferSize: 8192,
reuseAddress: true,
socketTimeout: 3000
}
tcpServer.setExtraOptions(tcpExtraOptions).then(() => {
console.info('setExtraOptions success');
}).catch((err: BusinessError) => {
console.error('setExtraOptions fail');
}); getLocalAddress(): Promise<NetAddress>
获取TCPSocketServer的本地Socket地址。使用Promise异步回调。
listen方法调用成功后,才可调用此方法。
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| Promise<NetAddress> | 以Promise形式返回获取本地socket地址的结果。 |
错误码:
以下错误码的详细介绍请参见Socket错误码。
| 错误码ID | 错误信息 |
|---|---|
| 2300002 | System internal error. |
| 2301009 | Bad file descriptor. |
| 2303188 | Socket operation on non-socket. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tcpServer: socket.TCPSocketServer = socket.constructTCPSocketServerInstance();
let listenAddr: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080,
family: 1
}
tcpServer.listen(listenAddr).then(() => {
tcpServer.getLocalAddress().then((localAddress: socket.NetAddress) => {
console.info("SUCCESS! Address:" + JSON.stringify(localAddress));
}).catch((err: BusinessError) => {
console.error("FerrorAILED! Error:" + JSON.stringify(err));
})
}).catch((err: BusinessError) => {
console.error('listen fail');
}); on(type: 'connect', callback: Callback<TCPSocketConnection>): void
订阅TCPSocketServer的连接事件。使用callback异步回调。
listen方法调用成功后,才可调用此方法。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 订阅的事件类型。'connect':连接事件。 |
| callback | Callback<TCPSocketConnection> | 是 | 回调函数。失败时返回错误码、错误信息。 |
错误码:
以下错误码的详细介绍请参见通用错误码。
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tcpServer: socket.TCPSocketServer = socket.constructTCPSocketServerInstance();
let listenAddr: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080,
family: 1
}
tcpServer.listen(listenAddr, (err: BusinessError) => {
if (err) {
console.error("listen fail");
return;
}
console.info("listen success");
tcpServer.on('connect', (data: socket.TCPSocketConnection) => {
console.info(JSON.stringify(data))
});
}) off(type: 'connect', callback?: Callback<TCPSocketConnection>): void
取消订阅TCPSocketServer的连接事件。使用callback异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 取消订阅的事件类型。'connect':连接事件。 |
| callback | Callback<TCPSocketConnection> | 否 | 回调函数。可以指定传入on中的callback取消对应的订阅,也可以不指定callback清空所有订阅。 |
错误码:
以下错误码的详细介绍请参见通用错误码。
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tcpServer: socket.TCPSocketServer = socket.constructTCPSocketServerInstance();
let listenAddr: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080,
family: 1
}
tcpServer.listen(listenAddr, (err: BusinessError) => {
if (err) {
console.error("listen fail");
return;
}
console.info("listen success");
let callback = (data: socket.TCPSocketConnection) => {
console.info('on connect message: ' + JSON.stringify(data));
}
tcpServer.on('connect', callback);
// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
tcpServer.off('connect', callback);
tcpServer.off('connect');
}) on(type: 'error', callback: ErrorCallback): void
订阅TCPSocketServer连接的error事件。使用callback异步回调。
listen方法调用成功后,才可调用此方法。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 订阅的事件类型。'error':error事件。 |
| callback | ErrorCallback | 是 | 回调函数。失败时返回错误码、错误信息。 |
错误码:
以下错误码的详细介绍请参见通用错误码。
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tcpServer: socket.TCPSocketServer = socket.constructTCPSocketServerInstance();
let listenAddr: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080,
family: 1
}
tcpServer.listen(listenAddr, (err: BusinessError) => {
if (err) {
console.error("listen fail");
return;
}
console.info("listen success");
tcpServer.on('error', (err: BusinessError) => {
console.error("on error, err:" + JSON.stringify(err))
});
}) off(type: 'error', callback?: ErrorCallback): void
取消订阅TCPSocketServer连接的error事件。使用callback异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 取消订阅的事件类型。'error':error事件。 |
| callback | ErrorCallback | 否 | 回调函数。可以指定传入on中的callback取消对应的订阅,也可以不指定callback清空所有订阅。 |
错误码:
以下错误码的详细介绍请参见通用错误码。
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tcpServer: socket.TCPSocketServer = socket.constructTCPSocketServerInstance();
let listenAddr: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080,
family: 1
}
tcpServer.listen(listenAddr, (err: BusinessError) => {
if (err) {
console.error("listen fail");
return;
}
console.info("listen success");
let callback = (err: BusinessError) => {
console.error("on error, err:" + JSON.stringify(err));
}
tcpServer.on('error', callback);
// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
tcpServer.off('error', callback);
tcpServer.off('error');
}) close(): Promise<void>
TCPSocketServer停止监听并释放通过listen方法绑定的端口。若多次调用listen方法,再调用此方法时会释放TCPSocketServer的所有监听端口。使用Promise异步回调。
需要权限:ohos.permission.INTERNET
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| Promise<void> | Promise对象,无返回结果。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 201 | Permission denied. |
| 2300002 | System internal error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tcpServer: socket.TCPSocketServer = socket.constructTCPSocketServerInstance();
let listenAddr: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080,
family: 1
}
tcpServer.on('connect', (connection: socket.TCPSocketConnection) => {
console.info("connection clientId: " + connection.clientId);
// 逻辑处理
tcpServer.close(); // 停止监听
connection.close(); // 关闭当前连接
});
tcpServer.listen(listenAddr).then(() => {
console.info('listen success');
}).catch((err: BusinessError) => {
console.error('listen fail: ' + err.code);
}); TCPSocketConnection连接,即TCPSocket客户端与服务端的连接。在调用TCPSocketConnection的方法前,需要先获取TCPSocketConnection对象。
客户端与服务端成功建立连接后,才能通过返回的TCPSocketConnection对象调用相应的接口。
系统能力:SystemCapability.Communication.NetStack
send(options: TCPSendOptions, callback: AsyncCallback<void>): void
通过TCPSocketConnection连接发送数据。使用callback异步回调。
与客户端建立连接后,才可调用此方法。
需要权限:ohos.permission.INTERNET
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| options | TCPSendOptions | 是 | TCPSocketConnection发送请求的参数。 |
| callback | AsyncCallback<void> | 是 | 回调函数。失败时返回错误码、错误信息。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 201 | Permission denied. |
| 2300002 | System internal error. |
示例:
import { socket } from '@kit.NetworkKit';
let tcpServer: socket.TCPSocketServer = socket.constructTCPSocketServerInstance();
tcpServer.on('connect', (client: socket.TCPSocketConnection) => {
let tcpSendOption: socket.TCPSendOptions = {
data: 'Hello, client!'
}
client.send(tcpSendOption, () => {
console.info('send success');
});
}); send(options: TCPSendOptions): Promise<void>
通过TCPSocketConnection连接发送数据。使用Promise异步回调。
与客户端建立连接后,才可调用此方法。
需要权限:ohos.permission.INTERNET
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| options | TCPSendOptions | 是 | TCPSocketConnection发送请求的参数。 |
返回值:
| 类型 | 说明 |
|---|---|
| Promise<void> | Promise对象。无返回结果的Promise对象。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 201 | Permission denied. |
| 2300002 | System internal error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tcpServer: socket.TCPSocketServer = socket.constructTCPSocketServerInstance();
tcpServer.on('connect', (client: socket.TCPSocketConnection) => {
let tcpSendOption: socket.TCPSendOptions = {
data: 'Hello, client!'
}
client.send(tcpSendOption).then(() => {
console.info('send success');
}).catch((err: BusinessError) => {
console.error('send fail');
});
}); close(callback: AsyncCallback<void>): void
关闭一个与TCPSocket建立的连接。使用callback异步回调。
需要权限:ohos.permission.INTERNET
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| callback | AsyncCallback<void> | 是 | 回调函数。失败时返回错误码、错误信息。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 201 | Permission denied. |
| 2300002 | System internal error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tcpServer: socket.TCPSocketServer = socket.constructTCPSocketServerInstance();
tcpServer.on('connect', (client: socket.TCPSocketConnection) => {
client.close((err: BusinessError) => {
if (err) {
console.error('close fail');
return;
}
console.info('close success');
});
}); close(): Promise<void>
关闭一个与TCPSocket建立的连接。使用Promise异步回调。
需要权限:ohos.permission.INTERNET
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| Promise<void> | Promise对象。无返回结果的Promise对象。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 201 | Permission denied. |
| 2300002 | System internal error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tcpServer: socket.TCPSocketServer = socket.constructTCPSocketServerInstance();
tcpServer.on('connect', (client: socket.TCPSocketConnection) => {
client.close().then(() => {
console.info('close success');
}).catch((err: BusinessError) => {
console.error('close fail');
});
}); getRemoteAddress(callback: AsyncCallback<NetAddress>): void
获取对端Socket地址。使用callback异步回调。
与客户端建立连接后,才可调用此方法。
需要权限:ohos.permission.INTERNET
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| callback | AsyncCallback<NetAddress> | 是 | 回调函数。失败时返回错误码、错误信息。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 201 | Permission denied. |
| 2300002 | System internal error. |
| 2303188 | Socket operation on non-socket. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tcpServer: socket.TCPSocketServer = socket.constructTCPSocketServerInstance();
tcpServer.on('connect', (client: socket.TCPSocketConnection) => {
client.getRemoteAddress((err: BusinessError, data: socket.NetAddress) => {
if (err) {
console.error('getRemoteAddress fail');
return;
}
console.info('getRemoteAddress success:' + JSON.stringify(data));
});
}); getRemoteAddress(): Promise<NetAddress>
获取对端Socket地址。使用Promise异步回调。
与客户端建立连接后,才可调用此方法。
需要权限:ohos.permission.INTERNET
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| Promise<NetAddress> | Promise对象,返回获取对端socket地址的结果。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 201 | Permission denied. |
| 2300002 | System internal error. |
| 2303188 | Socket operation on non-socket. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tcpServer: socket.TCPSocketServer = socket.constructTCPSocketServerInstance();
tcpServer.on('connect', (client: socket.TCPSocketConnection) => {
client.getRemoteAddress().then(() => {
console.info('getRemoteAddress success');
}).catch((err: BusinessError) => {
console.error('getRemoteAddress fail');
});
}); getLocalAddress(): Promise<NetAddress>
获取TCPSocketConnection连接的本地Socket地址。使用Promise异步回调。
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| Promise<NetAddress> | 以Promise形式返回获取本地socket地址的结果。 |
错误码:
以下错误码的详细介绍请参见Socket错误码。
| 错误码ID | 错误信息 |
|---|---|
| 2300002 | System internal error. |
| 2301009 | Bad file descriptor. |
| 2303188 | Socket operation on non-socket. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tcpServer: socket.TCPSocketServer = socket.constructTCPSocketServerInstance();
let listenAddr: socket.NetAddress = {
address: "192.168.xx.xx",
port: 8080,
family: 1
}
tcpServer.listen(listenAddr, (err: BusinessError) => {
let tcp: socket.TCPSocket = socket.constructTCPSocketInstance();
let netAddress: socket.NetAddress = {
address: "192.168.xx.xx",
port: 8080
}
let options: socket.TCPConnectOptions = {
address: netAddress,
timeout: 6000
}
tcp.connect(options, (err: BusinessError) => {
if (err) {
console.error('connect fail');
return;
}
console.info('connect success!');
})
tcpServer.on('connect', (client: socket.TCPSocketConnection) => {
client.getLocalAddress().then((localAddress: socket.NetAddress) => {
console.info("Family IP Port: " + JSON.stringify(localAddress));
}).catch((err: BusinessError) => {
console.error('Error:' + JSON.stringify(err));
});
})
}) getSocketFd(): Promise<number>
获取TCPSocketConnection连接的文件描述符。使用Promise异步回调。
需要权限:ohos.permission.INTERNET
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| Promise<number> | Promise对象,返回Socket的文件描述符。 |
错误码:
以下错误码的详细介绍请参见通用错误码。
| 错误码ID | 错误信息 |
|---|---|
| 201 | Permission denied. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tcpServer: socket.TCPSocketServer = socket.constructTCPSocketServerInstance();
let listenAddr: socket.NetAddress = {
address: "192.168.xx.xx",
port: 8080,
family: 1
}
tcpServer.listen(listenAddr, (err: BusinessError) => {
tcpServer.on('connect', (client: socket.TCPSocketConnection) => {
client.getSocketFd().then((fd: number) => {
console.info(`Socket FD:${fd}`);
}).catch((err: BusinessError) => {
console.error(`getSocketFd fail: ${err.message}, errorCode: ${err.code}`);
});
})
}).catch((err: BusinessError) => {
console.error('listen fail');
}); on(type: 'message', callback: Callback<SocketMessageInfo>): void
订阅TCPSocketConnection连接的接收消息事件。使用callback异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 订阅的事件类型。'message':接收消息事件。 |
| callback | Callback<SocketMessageInfo> | 是 | 回调函数。失败时返回错误码、错误信息。 |
错误码:
以下错误码的详细介绍请参见通用错误码。
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tcpServer: socket.TCPSocketServer = socket.constructTCPSocketServerInstance();
tcpServer.on('connect', (client: socket.TCPSocketConnection) => {
client.on('message', (value: socket.SocketMessageInfo) => {
let messageView = '';
let uint8Array = new Uint8Array(value.message);
for (let i: number = 0; i < value.message.byteLength; i++) {
let messages = uint8Array[i];
let message = String.fromCharCode(messages);
messageView += message;
}
console.info('on message message: ' + JSON.stringify(messageView));
console.info('remoteInfo: ' + JSON.stringify(value.remoteInfo));
});
}); off(type: 'message', callback?: Callback<SocketMessageInfo>): void
取消订阅TCPSocketConnection连接的接收消息事件。使用callback异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 取消订阅的事件类型。'message':接收消息事件。 |
| callback | Callback<SocketMessageInfo> | 否 | 回调函数。可以指定传入on中的callback取消对应的订阅,也可以不指定callback清空所有订阅。 |
错误码:
以下错误码的详细介绍请参见通用错误码。
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tcpServer: socket.TCPSocketServer = socket.constructTCPSocketServerInstance();
let callback = (value: socket.SocketMessageInfo) => {
let messageView = '';
for (let i: number = 0; i < value.message.byteLength; i++) {
let uint8Array = new Uint8Array(value.message)
let messages = uint8Array[i]
let message = String.fromCharCode(messages);
messageView += message;
}
console.info('on message message: ' + JSON.stringify(messageView));
console.info('remoteInfo: ' + JSON.stringify(value.remoteInfo));
}
tcpServer.on('connect', (client: socket.TCPSocketConnection) => {
client.on('message', callback);
// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
client.off('message', callback);
client.off('message');
}); on(type: 'close', callback: Callback<void>): void
订阅TCPSocketConnection的关闭事件。使用callback异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 订阅的事件类型。'close':关闭事件。 |
| callback | Callback<void> | 是 | 回调函数。失败时返回错误码、错误信息。 |
错误码:
以下错误码的详细介绍请参见通用错误码。
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tcpServer: socket.TCPSocketServer = socket.constructTCPSocketServerInstance();
tcpServer.on('connect', (client: socket.TCPSocketConnection) => {
client.on('close', () => {
console.info("on close success")
});
}); off(type: 'close', callback?: Callback<void>): void
取消订阅TCPSocketConnection的关闭事件。使用callback异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 取消订阅的事件类型。'close':关闭事件。 |
| callback | Callback<void> | 否 | 回调函数。可以指定传入on中的callback取消对应的订阅,也可以不指定callback清空所有订阅。 |
错误码:
以下错误码的详细介绍请参见通用错误码。
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
示例:
import { socket } from '@kit.NetworkKit';
let tcpServer: socket.TCPSocketServer = socket.constructTCPSocketServerInstance();
let callback = () => {
console.info("on close success");
}
tcpServer.on('connect', (client: socket.TCPSocketConnection) => {
client.on('close', callback);
// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
client.off('close', callback);
client.off('close');
}); on(type: 'error', callback: ErrorCallback): void
订阅TCPSocketConnection连接的error事件。使用callback异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 订阅的事件类型。'error':error事件。 |
| callback | ErrorCallback | 是 | 回调函数。失败时返回错误码、错误信息。 |
错误码:
以下错误码的详细介绍请参见通用错误码。
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tcpServer: socket.TCPSocketServer = socket.constructTCPSocketServerInstance();
tcpServer.on('connect', (client: socket.TCPSocketConnection) => {
client.on('error', (err: BusinessError) => {
console.error("on error, err:" + JSON.stringify(err))
});
}); off(type: 'error', callback?: ErrorCallback): void
取消订阅TCPSocketConnection连接的error事件。使用callback异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 取消订阅的事件类型。'error':error事件。 |
| callback | ErrorCallback | 否 | 回调函数。可以指定传入on中的callback取消对应的订阅,也可以不指定callback清空所有订阅。 |
错误码:
以下错误码的详细介绍请参见通用错误码。
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let callback = (err: BusinessError) => {
console.error("on error, err:" + JSON.stringify(err));
}
let tcpServer: socket.TCPSocketServer = socket.constructTCPSocketServerInstance();
tcpServer.on('connect', (client: socket.TCPSocketConnection) => {
client.on('error', callback);
// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
client.off('error', callback);
client.off('error');
}); constructLocalSocketInstance(): LocalSocket
创建一个LocalSocket对象。
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| LocalSocket | 返回一个LocalSocket对象。 |
示例:
import { socket } from '@kit.NetworkKit';
let client: socket.LocalSocket = socket.constructLocalSocketInstance(); LocalSocket连接。在调用LocalSocket的方法前,需要先通过socket.constructLocalSocketInstance创建LocalSocket对象。
bind(address: LocalAddress): Promise<void>;
绑定本地套接字文件的路径。使用Promise异步回调。
bind方法可以使客户端确保有个明确的本地套接字路径,显式的绑定一个本地套接字文件。
bind方法在本地套接字通信中非必须。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| address | LocalAddress | 是 | 本端地址信息,参考LocalAddress。 |
返回值:
| 类型 | 说明 |
|---|---|
| Promise<void> | Promise对象。无返回结果的Promise对象。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 2301013 | Insufficient permissions. |
| 2301022 | Invalid argument. |
| 2301098 | Address already in use. |
示例:
在本文档的示例中,通过this.context来获取UIAbilityContext,其中this代表继承自UIAbility的UIAbility实例。如需在页面中使用UIAbilityContext提供的能力,请参见获取UIAbility的上下文信息。
import { socket } from '@kit.NetworkKit';
import { common } from '@kit.AbilityKit';
let client: socket.LocalSocket = socket.constructLocalSocketInstance()
let context: common.UIAbilityContext = this.getUIContext().getHostContext() as common.UIAbilityContext;
let sandboxPath: string = context.filesDir + '/testSocket';
let address : socket.LocalAddress = {
address: sandboxPath
}
client.bind(address).then(() => {
console.info('bind success')
}).catch((err: Object) => {
console.error('failed to bind: ' + JSON.stringify(err))
}) connect(options: LocalConnectOptions): Promise<void>
连接到指定的套接字文件。使用Promise异步回调。
在没有执行localsocket.bind的情况下,也可以直接调用该接口完成与LocalSocket服务端的连接。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| options | LocalConnectOptions | 是 | LocalSocket连接的参数,参考LocalConnectOptions。 |
返回值:
| 类型 | 说明 |
|---|---|
| Promise<void> | 以Promise形式返回LocalSocket连接服务端的结果。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 2301013 | Insufficient permissions. |
| 2301022 | Invalid argument. |
| 2301111 | Connection refused. |
| 2301099 | Cannot assign requested address. |
示例:
在本文档的示例中,通过this.context来获取UIAbilityContext,其中this代表继承自UIAbility的UIAbility实例。如需在页面中使用UIAbilityContext提供的能力,请参见获取UIAbility的上下文信息。
import { socket } from '@kit.NetworkKit';
import { common } from '@kit.AbilityKit';
let client: socket.LocalSocket = socket.constructLocalSocketInstance();
let context: common.UIAbilityContext = this.getUIContext().getHostContext() as common.UIAbilityContext;
let sandboxPath: string = context.filesDir + '/testSocket';
let localAddress : socket.LocalAddress = {
address: sandboxPath
}
let connectOpt: socket.LocalConnectOptions = {
address: localAddress,
timeout: 6000
}
client.connect(connectOpt).then(() => {
console.info('connect success')
}).catch((err: Object) => {
console.error('connect fail: ' + JSON.stringify(err));
}); send(options: LocalSendOptions): Promise<void>
通过LocalSocket连接发送数据。使用Promise异步回调。
connect方法调用成功后,才可调用此方法。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| options | LocalSendOptions | 是 | LocalSocket发送请求的参数,参考LocalSendOptions。 |
返回值:
| 类型 | 说明 |
|---|---|
| Promise<void> | Promise对象。无返回结果的Promise对象。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 2301011 | Operation would block. |
示例:
在本文档的示例中,通过this.context来获取UIAbilityContext,其中this代表继承自UIAbility的UIAbility实例。如需在页面中使用UIAbilityContext提供的能力,请参见获取UIAbility的上下文信息。
import { socket } from '@kit.NetworkKit';
import { common } from '@kit.AbilityKit';
let client: socket.LocalSocket = socket.constructLocalSocketInstance()
let context: common.UIAbilityContext = this.getUIContext().getHostContext() as common.UIAbilityContext;
let sandboxPath: string = context.filesDir + '/testSocket';
let localAddress : socket.LocalAddress = {
address: sandboxPath
}
let connectOpt: socket.LocalConnectOptions = {
address: localAddress,
timeout: 6000
}
client.connect(connectOpt).then(() => {
console.info('connect success')
}).catch((err: Object) => {
console.error('connect failed: ' + JSON.stringify(err))
})
let sendOpt: socket.LocalSendOptions = {
data: 'Hello world!'
}
client.send(sendOpt).then(() => {
console.info('send success')
}).catch((err: Object) => {
console.error('send fail: ' + JSON.stringify(err))
}) close(): Promise<void>
关闭LocalSocket连接。使用Promise异步回调。
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| Promise<void> | Promise对象。无返回结果的Promise对象。 |
错误码:
以下错误码的详细介绍请参见Socket错误码。
| 错误码ID | 错误信息 |
|---|---|
| 2301009 | Bad file descriptor. |
示例:
import { socket } from '@kit.NetworkKit';
let client: socket.LocalSocket = socket.constructLocalSocketInstance();
client.close().then(() => {
console.info('close success');
}).catch((err: Object) => {
console.error('close fail: ' + JSON.stringify(err));
}); getState(): Promise<SocketStateBase>
获取LocalSocket状态。使用Promise异步回调。
bind或connect方法调用成功后,才可调用此方法。
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| Promise<SocketStateBase> | Promise对象,返回获取LocalSocket状态的结果。 |
示例:
在本文档的示例中,通过this.context来获取UIAbilityContext,其中this代表继承自UIAbility的UIAbility实例。如需在页面中使用UIAbilityContext提供的能力,请参见获取UIAbility的上下文信息。
import { socket } from '@kit.NetworkKit';
import { common } from '@kit.AbilityKit';
let client: socket.LocalSocket = socket.constructLocalSocketInstance();
let context: common.UIAbilityContext = this.getUIContext().getHostContext() as common.UIAbilityContext;
let sandboxPath: string = context.filesDir + '/testSocket';
let localAddress : socket.LocalAddress = {
address: sandboxPath
}
let connectOpt: socket.LocalConnectOptions = {
address: localAddress,
timeout: 6000
}
client.connect(connectOpt).then(() => {
console.info('connect success');
client.getState().then(() => {
console.info('getState success');
}).catch((err: Object) => {
console.error('getState fail: ' + JSON.stringify(err))
});
}).catch((err: Object) => {
console.error('connect fail: ' + JSON.stringify(err));
}); getSocketFd(): Promise<number>
获取LocalSocket的文件描述符。使用Promise异步回调。
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| Promise<number> | Promise对象,返回socket的文件描述符。 |
示例:
在本文档的示例中,通过this.context来获取UIAbilityContext,其中this代表继承自UIAbility的UIAbility实例。如需在页面中使用UIAbilityContext提供的能力,请参见获取UIAbility的上下文信息。
import { socket } from '@kit.NetworkKit';
import { common } from '@kit.AbilityKit';
let client: socket.LocalSocket = socket.constructLocalSocketInstance();
let context: common.UIAbilityContext = this.getUIContext().getHostContext() as common.UIAbilityContext;
let sandboxPath: string = context.filesDir + '/testSocket';
let localAddress : socket.LocalAddress = {
address: sandboxPath
}
let connectOpt: socket.LocalConnectOptions = {
address: localAddress,
timeout: 6000
}
client.connect(connectOpt).then(() => {
console.info('connect ok')
}).catch((err: Object) => {
console.error('connect fail: ' + JSON.stringify(err))
})
client.getSocketFd().then((data: number) => {
console.info("fd: " + data);
}).catch((err: Object) => {
console.error("getSocketFd failed: " + JSON.stringify(err));
}) setExtraOptions(options: ExtraOptionsBase): Promise<void>
设置LocalSocket的套接字属性。使用Promise异步回调。
bind或connect方法调用成功后,才可调用此方法。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| options | ExtraOptionsBase | 是 | LocalSocket连接的其他属性,参考ExtraOptionsBase。 |
返回值:
| 类型 | 说明 |
|---|---|
| Promise<void> | 以Promise形式返回设置LocalSocket套接字属性的结果。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 2301009 | Bad file descriptor. |
示例:
在本文档的示例中,通过this.context来获取UIAbilityContext,其中this代表继承自UIAbility的UIAbility实例。如需在页面中使用UIAbilityContext提供的能力,请参见获取UIAbility的上下文信息。
import { socket } from '@kit.NetworkKit';
import { common } from '@kit.AbilityKit';
let client: socket.LocalSocket = socket.constructLocalSocketInstance();
let context: common.UIAbilityContext = this.getUIContext().getHostContext() as common.UIAbilityContext;
let sandboxPath: string = context.filesDir + '/testSocket';
let localAddress : socket.LocalAddress = {
address: sandboxPath
}
let connectOpt: socket.LocalConnectOptions = {
address: localAddress,
timeout: 6000
}
client.connect(connectOpt).then(() => {
console.info('connect success');
let options: socket.ExtraOptionsBase = {
receiveBufferSize: 8192,
sendBufferSize: 8192,
socketTimeout: 3000
}
client.setExtraOptions(options).then(() => {
console.info('setExtraOptions success');
}).catch((err: Object) => {
console.error('setExtraOptions fail: ' + JSON.stringify(err));
});
}).catch((err: Object) => {
console.error('connect fail: ' + JSON.stringify(err));
}); getExtraOptions(): Promise<ExtraOptionsBase>;
获取LocalSocket的套接字属性。使用Promise异步回调。
bind或connect方法调用成功后,才可调用此方法。
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| Promise<ExtraOptionsBase> | Promise对象,返回设置LocalSocket套接字的属性。 |
错误码:
以下错误码的详细介绍请参见Socket错误码。
| 错误码ID | 错误信息 |
|---|---|
| 2301009 | Bad file descriptor. |
示例:
在本文档的示例中,通过this.context来获取UIAbilityContext,其中this代表继承自UIAbility的UIAbility实例。如需在页面中使用UIAbilityContext提供的能力,请参见获取UIAbility的上下文信息。
import { socket } from '@kit.NetworkKit';
import { common } from '@kit.AbilityKit';
let client: socket.LocalSocket = socket.constructLocalSocketInstance();
let context: common.UIAbilityContext = this.getUIContext().getHostContext() as common.UIAbilityContext;
let sandboxPath: string = context.filesDir + '/testSocket';
let localAddress : socket.LocalAddress = {
address: sandboxPath
}
let connectOpt: socket.LocalConnectOptions = {
address: localAddress,
timeout: 6000
}
client.connect(connectOpt).then(() => {
console.info('connect success');
client.getExtraOptions().then((options : socket.ExtraOptionsBase) => {
console.info('options: ' + JSON.stringify(options));
}).catch((err: Object) => {
console.error('setExtraOptions fail: ' + JSON.stringify(err));
});
}).catch((err: Object) => {
console.error('connect fail: ' + JSON.stringify(err));
}); getLocalAddress(): Promise<string>
获取LocalSocket的本地Socket地址。使用Promise异步回调。
bind方法调用成功后,才可调用此方法。
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| Promise<string> | Promise对象,返回获取本地socket地址的结果。 |
错误码:
以下错误码的详细介绍请参见Socket错误码。
| 错误码ID | 错误信息 |
|---|---|
| 2300002 | System internal error. |
| 2301009 | Bad file descriptor. |
| 2303188 | Socket operation on non-socket. |
示例:
在本文档的示例中,通过this.context来获取UIAbilityContext,其中this代表继承自UIAbility的UIAbility实例。如需在页面中使用UIAbilityContext提供的能力,请参见获取UIAbility的上下文信息。
import { common } from '@kit.AbilityKit';
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let client: socket.LocalSocket = socket.constructLocalSocketInstance();
let context: common.UIAbilityContext = this.getUIContext().getHostContext() as common.UIAbilityContext;
let sandboxPath: string = context.filesDir + '/testSocket';
let address : socket.LocalAddress = {
address: sandboxPath
}
client.bind(address).then(() => {
console.error('bind success');
client.getLocalAddress().then((localPath: string) => {
console.info("SUCCESS " + JSON.stringify(localPath));
}).catch((err: BusinessError) => {
console.error("FAIL " + JSON.stringify(err));
})
}).catch((err: Object) => {
console.error('failed to bind: ' + JSON.stringify(err));
}) on(type: 'message', callback: Callback<LocalSocketMessageInfo>): void
订阅LocalSocket连接的接收消息事件。使用callback异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 订阅的事件类型。'message':接收消息事件。 |
| callback | Callback<LocalSocketMessageInfo> | 是 | 以callback的形式异步返回接收的消息。 |
错误码:
以下错误码的详细介绍请参见通用错误码。
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
示例:
import { socket } from '@kit.NetworkKit';
let client: socket.LocalSocket = socket.constructLocalSocketInstance();
client.on('message', (value: socket.LocalSocketMessageInfo) => {
const uintArray = new Uint8Array(value.message)
let messageView = '';
for (let i = 0; i < uintArray.length; i++) {
messageView += String.fromCharCode(uintArray[i]);
}
console.info('total: ' + JSON.stringify(value));
console.info('message information: ' + messageView);
}); off(type: 'message', callback?: Callback<LocalSocketMessageInfo>): void
取消订阅LocalSocket连接的接收消息事件。使用callback异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 取消订阅的事件类型。'message':接收消息事件。 |
| callback | Callback<LocalSocketMessageInfo> | 否 | 回调函数。可以指定传入on中的callback取消对应的订阅,也可以不指定callback清空所有订阅。 |
错误码:
以下错误码的详细介绍请参见通用错误码。
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
示例:
import { socket } from '@kit.NetworkKit';
let client: socket.LocalSocket = socket.constructLocalSocketInstance();
let messageView = '';
let callback = (value: socket.LocalSocketMessageInfo) => {
const uintArray = new Uint8Array(value.message)
let messageView = '';
for (let i = 0; i < uintArray.length; i++) {
messageView += String.fromCharCode(uintArray[i]);
}
console.info('total: ' + JSON.stringify(value));
console.info('message information: ' + messageView);
}
client.on('message', callback);
client.off('message'); on(type: 'connect', callback: Callback<void>): void
订阅LocalSocket的连接事件。使用callback异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 订阅的事件类型。 |
| callback | Callback<void> | 是 | 以callback的形式异步返回与服务端连接的结果。 |
错误码:
以下错误码的详细介绍请参见通用错误码。
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
示例:
import { socket } from '@kit.NetworkKit';
let client: socket.LocalSocket = socket.constructLocalSocketInstance();
client.on('connect', () => {
console.info("on connect success")
}); off(type: 'connect', callback?: Callback<void>): void
取消订阅LocalSocket的连接事件。使用callback异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 取消订阅的事件类型。'connect':LocalSocket的connect事件。 |
| callback | Callback<void> | 否 | 回调函数。可以指定传入on中的callback取消对应的订阅,也可以不指定callback清空所有订阅。 |
错误码:
以下错误码的详细介绍请参见通用错误码。
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
示例:
import { socket } from '@kit.NetworkKit';
let client: socket.LocalSocket = socket.constructLocalSocketInstance();
let callback = () => {
console.info("on connect success");
}
client.on('connect', callback);
// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
client.off('connect', callback);
client.off('connect'); on(type: 'close', callback: Callback<void>): void
订阅LocalSocket的关闭事件。使用callback异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 订阅LocalSocket的关闭事件。 |
| callback | Callback<void> | 是 | 以callback的形式异步返回关闭localsocket的结果。 |
错误码:
以下错误码的详细介绍请参见通用错误码。
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
示例:
import { socket } from '@kit.NetworkKit';
let client: socket.LocalSocket = socket.constructLocalSocketInstance();
let callback = () => {
console.info("on close success");
}
client.on('close', callback); off(type: 'close', callback?: Callback<void>): void
取消订阅LocalSocket的关闭事件。使用callback异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 取消订阅的事件类型。'close':LocalSocket的关闭事件。 |
| callback | Callback<void> | 否 | 回调函数。可以指定传入on中的callback取消对应的订阅,也可以不指定callback清空所有订阅。 |
错误码:
以下错误码的详细介绍请参见通用错误码。
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
示例:
import { socket } from '@kit.NetworkKit';
let client: socket.LocalSocket = socket.constructLocalSocketInstance();
let callback = () => {
console.info("on close success");
}
client.on('close', callback);
// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
client.off('close', callback);
client.off('close'); on(type: 'error', callback: ErrorCallback): void
订阅LocalSocket连接的error事件。使用callback异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 订阅LocalSocket的error事件。 |
| callback | ErrorCallback | 是 | 以callback的形式异步返回出现错误的结果。 |
错误码:
以下错误码的详细介绍请参见通用错误码。
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
示例:
import { socket } from '@kit.NetworkKit';
let client: socket.LocalSocket = socket.constructLocalSocketInstance();
client.on('error', (err: Object) => {
console.error("on error, err:" + JSON.stringify(err))
}); off(type: 'error', callback?: ErrorCallback): void
取消订阅LocalSocket连接的error事件。使用callback异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 取消订阅的事件类型。'error':LocalSocket的error事件。 |
| callback | ErrorCallback | 否 | 回调函数。可以指定传入on中的callback取消对应的订阅,也可以不指定callback清空所有订阅。 |
错误码:
以下错误码的详细介绍请参见通用错误码。
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
示例:
import { socket } from '@kit.NetworkKit';
let client: socket.LocalSocket = socket.constructLocalSocketInstance();
let callback = (err: Object) => {
console.error("on error, err:" + JSON.stringify(err));
}
client.on('error', callback);
// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
client.off('error', callback);
client.off('error'); LocalSocket客户端与服务端通信时接收的数据。
系统能力:SystemCapability.Communication.NetStack
| 名称 | 类型 | 只读 | 可选 | 说明 |
|---|---|---|---|---|
| message | ArrayBuffer | 否 | 否 | 收到的消息数据。 |
| address | string | 否 | 否 | 使用的本地套接字路径。 |
| size | number | 否 | 否 | 数据长度。 |
LocalSocket本地套接字文件路径信息,在传入套接字路径进行绑定时,会在此路径下创建套接字文件。
系统能力:SystemCapability.Communication.NetStack
| 名称 | 类型 | 只读 | 可选 | 说明 |
|---|---|---|---|---|
| address | string | 否 | 否 | 本地套接字路径。 |
LocalSocket客户端在连接服务端时传入的参数信息。
系统能力:SystemCapability.Communication.NetStack
| 名称 | 类型 | 只读 | 可选 | 说明 |
|---|---|---|---|---|
| address | LocalAddress | 否 | 否 | 指定的本地套接字路径。 |
| timeout | number | 否 | 是 | 连接服务端的超时时间,单位为毫秒。默认值为0。需要应用手动设置一下,建议设置为5000。 |
LocalSocket发送请求的参数。
系统能力:SystemCapability.Communication.NetStack
| 名称 | 类型 | 只读 | 可选 | 说明 |
|---|---|---|---|---|
| data | string | ArrayBuffer | 否 | 否 | 需要发送的数据。 |
| encoding | string | 否 | 是 | 字符编码。 |
Socket套接字的基础属性。
系统能力:SystemCapability.Communication.NetStack
| 名称 | 类型 | 只读 | 可选 | 说明 |
|---|---|---|---|---|
| receiveBufferSize | number | 否 | 是 | 接收缓冲区大小(单位:Byte),取值范围0~262144,不设置或设置的值超过取值范围则会默认为8192。 |
| sendBufferSize | number | 否 | 是 | 发送缓冲区大小(单位:Byte),取值范围0~262144,不设置或设置的值超过取值范围则会默认为8192。 |
| reuseAddress | boolean | 否 | 是 | 是否重用地址。true:重用地址;false:不重用地址。默认值为false。 |
| socketTimeout | number | 否 | 是 | 套接字超时时间,单位毫秒(ms)。默认值为0,表示不设置超时时间。 |
constructLocalSocketServerInstance(): LocalSocketServer
创建一个LocalSocketServer对象。
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| LocalSocketServer | 返回一个LocalSocketServer对象。 |
示例:
import { socket } from '@kit.NetworkKit';
let server: socket.LocalSocketServer = socket.constructLocalSocketServerInstance(); LocalSocketServer类。在调用LocalSocketServer的方法前,需要先通过socket.constructLocalSocketServerInstance创建LocalSocketServer对象。
listen(address: LocalAddress): Promise<void>
绑定本地套接字文件,监听并接受与此套接字建立的LocalSocket连接。该接口使用多线程并发处理客户端的数据。使用Promise异步回调。
服务端使用该方法完成bind,listen,accept操作,传入套接字文件路径,调用此接口后会自动生成本地套接字文件。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| address | LocalAddress | 是 | 目标地址信息。 |
返回值:
| 类型 | 说明 |
|---|---|
| Promise<void> | Promise对象,无返回结果。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 2303109 | Bad file number. |
| 2301013 | Insufficient permissions. |
| 2301022 | Invalid argument. |
| 2301098 | Address already in use. |
示例:
在本文档的示例中,通过this.context来获取UIAbilityContext,其中this代表继承自UIAbility的UIAbility实例。如需在页面中使用UIAbilityContext提供的能力,请参见获取UIAbility的上下文信息。
import { socket } from '@kit.NetworkKit';
import { common } from '@kit.AbilityKit';
let server: socket.LocalSocketServer = socket.constructLocalSocketServerInstance();
let context: common.UIAbilityContext = this.getUIContext().getHostContext() as common.UIAbilityContext;
let sandboxPath: string = context.filesDir + '/testSocket';
let addr: socket.LocalAddress = {
address: sandboxPath
}
server.listen(addr).then(() => {
console.info('listen success');
}).catch((err: Object) => {
console.error('listen fail: ' + JSON.stringify(err));
}); getState(): Promise<SocketStateBase>
获取LocalSocketServer状态。使用Promise异步回调。
listen方法调用成功后,才可调用此方法。
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| Promise<SocketStateBase> | Promise对象,返回获取LocalSocketServer状态的结果。 |
示例:
在本文档的示例中,通过this.context来获取UIAbilityContext,其中this代表继承自UIAbility的UIAbility实例。如需在页面中使用UIAbilityContext提供的能力,请参见获取UIAbility的上下文信息。
import { socket } from '@kit.NetworkKit';
import { common } from '@kit.AbilityKit';
let server: socket.LocalSocketServer = socket.constructLocalSocketServerInstance();
let context: common.UIAbilityContext = this.getUIContext().getHostContext() as common.UIAbilityContext;
let sandboxPath: string = context.filesDir + '/testSocket';
let listenAddr: socket.LocalAddress = {
address: sandboxPath
}
server.listen(listenAddr).then(() => {
console.info("listen success");
}).catch((err: Object) => {
console.error("listen fail: " + JSON.stringify(err));
})
server.getState().then((data: socket.SocketStateBase) => {
console.info('getState success: ' + JSON.stringify(data));
}).catch((err: Object) => {
console.error('getState fail: ' + JSON.stringify(err));
}); setExtraOptions(options: ExtraOptionsBase): Promise<void>
设置LocalSocketServer连接的套接字属性。使用Promise异步回调。
listen方法调用成功后,才可调用此方法。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| options | ExtraOptionsBase | 是 | LocalSocketServer连接的其他属性。 |
返回值:
| 类型 | 说明 |
|---|---|
| Promise<void> | Promise对象。无返回结果的Promise对象。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 2301009 | Bad file descriptor. |
示例:
在本文档的示例中,通过this.context来获取UIAbilityContext,其中this代表继承自UIAbility的UIAbility实例。如需在页面中使用UIAbilityContext提供的能力,请参见获取UIAbility的上下文信息。
import { socket } from '@kit.NetworkKit';
import { common } from '@kit.AbilityKit';
let server: socket.LocalSocketServer = socket.constructLocalSocketServerInstance();
let context: common.UIAbilityContext = this.getUIContext().getHostContext() as common.UIAbilityContext;
let sandboxPath: string = context.filesDir + '/testSocket';
let listenAddr: socket.LocalAddress = {
address: sandboxPath
}
server.listen(listenAddr).then(() => {
console.info("listen success");
}).catch((err: Object) => {
console.error("listen fail: " + JSON.stringify(err));
})
let options: socket.ExtraOptionsBase = {
receiveBufferSize: 8192,
sendBufferSize: 8192,
socketTimeout: 3000
}
server.setExtraOptions(options).then(() => {
console.info('setExtraOptions success');
}).catch((err: Object) => {
console.error('setExtraOptions fail: ' + JSON.stringify(err));
}); getExtraOptions(): Promise<ExtraOptionsBase>;
获取LocalSocketServer中连接的套接字的属性。使用Promise异步回调。
listen方法调用成功后,才可调用此方法。
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| Promise<ExtraOptionsBase> | Promise对象,返回套接字的属性。 |
错误码:
以下错误码的详细介绍请参见通用错误码。
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
示例:
在本文档的示例中,通过this.context来获取UIAbilityContext,其中this代表继承自UIAbility的UIAbility实例。如需在页面中使用UIAbilityContext提供的能力,请参见获取UIAbility的上下文信息。
import { socket } from '@kit.NetworkKit';
import { common } from '@kit.AbilityKit';
let server: socket.LocalSocketServer = socket.constructLocalSocketServerInstance();
let context: common.UIAbilityContext = this.getUIContext().getHostContext() as common.UIAbilityContext;
let sandboxPath: string = context.filesDir + '/testSocket';
let listenAddr: socket.LocalAddress = {
address: sandboxPath
}
server.listen(listenAddr).then(() => {
console.info("listen success");
}).catch((err: Object) => {
console.error("listen fail: " + JSON.stringify(err));
})
server.getExtraOptions().then((options: socket.ExtraOptionsBase) => {
console.info('options: ' + JSON.stringify(options));
}).catch((err: Object) => {
console.error('getExtraOptions fail: ' + JSON.stringify(err));
}); getLocalAddress(): Promise<string>
获取LocalSocketServer中本地Socket地址。使用Promise异步回调。
listen方法调用成功后,才可调用此方法。
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| Promise<string> | Promise对象,返回获取本地socket地址的结果。 |
错误码:
以下错误码的详细介绍请参见Socket错误码。
| 错误码ID | 错误信息 |
|---|---|
| 2300002 | System internal error. |
| 2301009 | Bad file descriptor. |
| 2303188 | Socket operation on non-socket. |
示例:
在本文档的示例中,通过this.context来获取UIAbilityContext,其中this代表继承自UIAbility的UIAbility实例。如需在页面中使用UIAbilityContext提供的能力,请参见获取UIAbility的上下文信息。
import { common } from '@kit.AbilityKit';
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let server: socket.LocalSocketServer = socket.constructLocalSocketServerInstance();
let context: common.UIAbilityContext = this.getUIContext().getHostContext() as common.UIAbilityContext;
let sandboxPath: string = context.filesDir + '/testSocket';
let listenAddr: socket.LocalAddress = {
address: sandboxPath
}
server.listen(listenAddr).then(() => {
console.info("listen success");
server.getLocalAddress().then((localPath: string) => {
console.info("SUCCESS " + JSON.stringify(localPath));
}).catch((err: BusinessError) => {
console.error("FAIL " + JSON.stringify(err));
})
}).catch((err: Object) => {
console.error("listen fail: " + JSON.stringify(err));
}) getSocketFd(): Promise<number>
获取LocalSocketServer监听端口绑定的文件描述符。使用Promise异步回调。
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| Promise<number> | Promise对象,返回Socket的文件描述符。 |
示例:
在本文档的示例中,通过this.context来获取UIAbilityContext,其中this代表继承自UIAbility的UIAbility实例。如需在页面中使用UIAbilityContext提供的能力,请参见获取UIAbility的上下文信息。
import { socket } from '@kit.NetworkKit';
import { common } from '@kit.AbilityKit';
let server: socket.LocalSocketServer = socket.constructLocalSocketServerInstance();
let context: common.UIAbilityContext = this.getUIContext().getHostContext() as common.UIAbilityContext;
let sandboxPath: string = context.filesDir + '/testSocket';
let listenAddr : socket.LocalAddress = {
address: sandboxPath
}
server.listen(listenAddr).then(() => {
console.info("listen success");
server.getSocketFd().then((fd: number) => {
console.info(`Socket FD:${fd}`);
}).catch((err: Object) => {
console.error(`getSocketFd fail: ${JSON.stringify(err)}`);
});
}).catch((err: Object) => {
console.error("listen fail: " + JSON.stringify(err));
}) on(type: 'connect', callback: Callback<LocalSocketConnection>): void
订阅LocalSocketServer的连接事件。使用callback异步回调。
listen方法调用成功后,才可调用此方法。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 订阅的事件类型。'connect':连接事件。 |
| callback | Callback<LocalSocketConnection> | 是 | 以callback的形式异步返回接收到客户端连接的结果。 |
错误码:
以下错误码的详细介绍请参见通用错误码。
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
示例:
import { socket } from '@kit.NetworkKit';
let server: socket.LocalSocketServer = socket.constructLocalSocketServerInstance();
server.on('connect', (connection: socket.LocalSocketConnection) => {
if (connection) {
console.info('accept a client')
}
}); off(type: 'connect', callback?: Callback<LocalSocketConnection>): void
取消订阅LocalSocketServer的连接事件。使用callback异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 取消订阅的事件类型。'connect':LocalSocketServer的连接事件。 |
| callback | Callback<LocalSocketConnection> | 否 | 回调函数。可以指定传入on中的callback取消对应的订阅,也可以不指定callback清空所有订阅。 |
错误码:
以下错误码的详细介绍请参见通用错误码。
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
示例:
import { socket } from '@kit.NetworkKit';
let server: socket.LocalSocketServer = socket.constructLocalSocketServerInstance();
let callback = (connection: socket.LocalSocketConnection) => {
if (connection) {
console.info('accept a client')
}
}
server.on('connect', callback);
// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
server.off('connect', callback);
server.off('connect'); on(type: 'error', callback: ErrorCallback): void
订阅LocalSocketServer连接的error事件。使用callback异步回调。
listen方法调用成功后,才可调用此方法。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 订阅的事件类型。'error':error事件。 |
| callback | ErrorCallback | 是 | 以callback的形式异步返回出现错误的结果。 |
错误码:
以下错误码的详细介绍请参见通用错误码。
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
示例:
import { socket } from '@kit.NetworkKit';
let server: socket.LocalSocketServer = socket.constructLocalSocketServerInstance();
server.on('error', (err: Object) => {
console.error("on error, err:" + JSON.stringify(err))
}); off(type: 'error', callback?: ErrorCallback): void
取消订阅LocalSocketServer连接的error事件。使用callback异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 取消订阅的事件类型。'error':error事件。 |
| callback | ErrorCallback | 否 | 回调函数。可以指定传入on中的callback取消对应的订阅,也可以不指定callback清空所有订阅。 |
错误码:
以下错误码的详细介绍请参见通用错误码。
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
示例:
import { socket } from '@kit.NetworkKit';
let server: socket.LocalSocketServer = socket.constructLocalSocketServerInstance();
let callback = (err: Object) => {
console.error("on error, err:" + JSON.stringify(err));
}
server.on('error', callback);
// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
server.off('error', callback);
server.off('error'); close(): Promise<void>
LocalSocketServer停止监听并释放通过listen方法绑定的监听端口。使用Promise异步回调。
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| Promise<void> | Promise对象,无返回结果。 |
错误码:
以下错误码的详细介绍请参见Socket错误码。
| 错误码ID | 错误信息 |
|---|---|
| 2300002 | System internal error. |
示例:
在本文档的示例中,通过this.context来获取UIAbilityContext,其中this代表继承自UIAbility的UIAbility实例。如需在页面中使用UIAbilityContext提供的能力,请参见获取UIAbility的上下文信息。
import { socket } from '@kit.NetworkKit';
import { common } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
let localserver: socket.LocalSocketServer = socket.constructLocalSocketServerInstance();
let context: common.UIAbilityContext = this.getUIContext().getHostContext() as common.UIAbilityContext;
let sandboxPath: string = context.filesDir + '/testSocket';
let addr: socket.LocalAddress = {
address: sandboxPath
}
localserver.on('connect', (connection: socket.LocalSocketConnection) => {
console.info("connection clientId: " + connection.clientId);
// 逻辑处理
localserver.close(); // 停止监听
connection.close(); // 关闭当前连接
});
localserver.listen(addr).then(() => {
console.info('listen success');
}).catch((err: BusinessError) => {
console.error('listen fail: ' + err.code);
}); LocalSocketConnection连接,即LocalSocket客户端与服务端的会话连接。在调用LocalSocketConnection的方法前,需要先获取LocalSocketConnection对象。
客户端与服务端成功建立连接后,才能通过返回的LocalSocketConnection对象调用相应的接口。
系统能力:SystemCapability.Communication.NetStack
send(options: LocalSendOptions): Promise<void>
通过LocalSocketConnection连接对象发送数据。使用Promise异步回调。
服务端与客户端建立连接后,服务端通过connect事件回调得到LocalSocketConnection连接对象后,才可使用连接对象调用此方法。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| options | LocalSendOptions | 是 | LocalSocketConnection发送请求的参数。 |
返回值:
| 类型 | 说明 |
|---|---|
| Promise<void> | Promise对象。无返回结果的Promise对象。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 2301011 | Operation would block. |
示例:
import { socket } from '@kit.NetworkKit';
let server: socket.LocalSocketServer = socket.constructLocalSocketServerInstance();
server.on('connect', (connection: socket.LocalSocketConnection) => {
let sendOptions: socket.LocalSendOptions = {
data: 'Hello, client!'
}
connection.send(sendOptions).then(() => {
console.info('send success');
}).catch((err: Object) => {
console.error('send fail: ' + JSON.stringify(err));
});
}); close(): Promise<void>
关闭一个LocalSocket客户端与服务端建立的连接。使用Promise异步回调。
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| Promise<void> | Promise对象。无返回结果的Promise对象。 |
错误码:
以下错误码的详细介绍请参见Socket错误码。
| 错误码ID | 错误信息 |
|---|---|
| 2301009 | Bad file descriptor. |
示例:
import { socket } from '@kit.NetworkKit';
let server: socket.LocalSocketServer = socket.constructLocalSocketServerInstance();
server.on('connect', (connection: socket.LocalSocketConnection) => {
connection.close().then(() => {
console.info('close success');
}).catch((err: Object) => {
console.error('close fail: ' + JSON.stringify(err));
});
}); getLocalAddress(): Promise<string>
获取LocalSocketConnection连接中的本地Socket地址。使用Promise异步回调。
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| Promise<string> | Promise对象,返回获取本地socket地址的结果。 |
错误码:
以下错误码的详细介绍请参见Socket错误码。
| 错误码ID | 错误信息 |
|---|---|
| 2300002 | System internal error. |
| 2301009 | Bad file descriptor. |
| 2303188 | Socket operation on non-socket. |
示例:
在本文档的示例中,通过this.context来获取UIAbilityContext,其中this代表继承自UIAbility的UIAbility实例。如需在页面中使用UIAbilityContext提供的能力,请参见获取UIAbility的上下文信息。
import { common } from '@kit.AbilityKit';
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let server: socket.LocalSocketServer = socket.constructLocalSocketServerInstance();
let context: common.UIAbilityContext = this.getUIContext().getHostContext() as common.UIAbilityContext;
let sandboxPath: string = context.filesDir + '/testSocket';
let localAddr: socket.LocalAddress = {
address: sandboxPath
}
server.listen(localAddr).then(() => {
console.info('listen success');
let client: socket.LocalSocket = socket.constructLocalSocketInstance();
let connectOpt: socket.LocalConnectOptions = {
address: localAddr,
timeout: 6000
}
client.connect(connectOpt).then(() => {
server.getLocalAddress().then((localPath: string) => {
console.info("success, localPath is" + JSON.stringify(localPath));
}).catch((err: BusinessError) => {
console.error("FAIL " + JSON.stringify(err));
})
}).catch((err: Object) => {
console.error('connect fail: ' + JSON.stringify(err));
});
}); getSocketFd(): Promise<number>
获取LocalSocketConnection连接的文件描述符。使用Promise异步回调。
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| Promise<number> | Promise对象,返回Socket的文件描述符。 |
示例:
在本文档的示例中,通过this.context来获取UIAbilityContext,其中this代表继承自UIAbility的UIAbility实例。如需在页面中使用UIAbilityContext提供的能力,请参见获取UIAbility的上下文信息。
import { socket } from '@kit.NetworkKit';
import { common } from '@kit.AbilityKit';
let server: socket.LocalSocketServer = socket.constructLocalSocketServerInstance();
let context: common.UIAbilityContext = this.getUIContext().getHostContext() as common.UIAbilityContext;
let sandboxPath: string = context.filesDir + '/testSocket';
let listenAddr : socket.LocalAddress = {
address: sandboxPath
}
server.on('connect', (connection: socket.LocalSocketConnection) => {
connection.getSocketFd().then((fd: number) => {
console.info(`Socket FD:${fd}`);
}).catch((err: Object) => {
console.error(`getSocketFd fail: ${JSON.stringify(err)}`);
});
});
server.listen(listenAddr).then(() => {
console.info("listen success");
}).catch((err: Object) => {
console.error(`listen fail: ${JSON.stringify(err)}`);
}) on(type: 'message', callback: Callback<LocalSocketMessageInfo>): void
订阅LocalSocketConnection连接的接收消息事件。使用callback异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 订阅的事件类型。'message':接收消息事件。 |
| callback | Callback<LocalSocketMessageInfo> | 是 | 以callback的形式异步返回接收到的来自客户端的消息。 |
错误码:
以下错误码的详细介绍请参见通用错误码。
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
示例:
在本文档的示例中,通过this.context来获取UIAbilityContext,其中this代表继承自UIAbility的UIAbility实例。如需在页面中使用UIAbilityContext提供的能力,请参见获取UIAbility的上下文信息。
import { socket } from '@kit.NetworkKit';
import { common } from '@kit.AbilityKit';
let server: socket.LocalSocketServer = socket.constructLocalSocketServerInstance();
let context: common.UIAbilityContext = this.getUIContext().getHostContext() as common.UIAbilityContext;
let sandboxPath: string = context.filesDir + '/testSocket';
let listenAddr: socket.LocalAddress = {
address: sandboxPath
}
server.listen(listenAddr).then(() => {
console.info("listen success");
}).catch((err: Object) => {
console.error("listen fail: " + JSON.stringify(err));
});
server.on('connect', (connection: socket.LocalSocketConnection) => {
connection.on('message', (value: socket.LocalSocketMessageInfo) => {
const uintArray = new Uint8Array(value.message);
let messageView = '';
for (let i = 0; i < uintArray.length; i++) {
messageView += String.fromCharCode(uintArray[i]);
}
console.info('total: ' + JSON.stringify(value));
console.info('message information: ' + messageView);
});
}); off(type: 'message', callback?: Callback<LocalSocketMessageInfo>): void
取消订阅LocalSocketConnection连接的接收消息事件。使用callback异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 取消订阅的事件类型。'message':接收消息事件。 |
| callback | Callback<LocalSocketMessageInfo> | 否 | 回调函数。可以指定传入on中的callback取消对应的订阅,也可以不指定callback清空所有订阅。 |
错误码:
以下错误码的详细介绍请参见通用错误码。
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
示例:
import { socket } from '@kit.NetworkKit';
let server: socket.LocalSocketServer = socket.constructLocalSocketServerInstance();
let callback = (value: socket.LocalSocketMessageInfo) => {
const uintArray = new Uint8Array(value.message)
let messageView = '';
for (let i = 0; i < uintArray.length; i++) {
messageView += String.fromCharCode(uintArray[i]);
}
console.info('total: ' + JSON.stringify(value));
console.info('message information: ' + messageView);
}
server.on('connect', (connection: socket.LocalSocketConnection) => {
connection.on('message', callback);
// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
connection.off('message', callback);
connection.off('message');
}); on(type: 'close', callback: Callback<void>): void
订阅LocalSocketConnection的关闭事件。使用callback异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 订阅的事件类型。'close':关闭事件。 |
| callback | Callback<void> | 是 | 以callback的形式异步返回会话关闭的结果。 |
错误码:
以下错误码的详细介绍请参见通用错误码。
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
示例:
import { socket } from '@kit.NetworkKit';
let server: socket.LocalSocketServer = socket.constructLocalSocketServerInstance();
server.on('connect', (connection: socket.LocalSocketConnection) => {
connection.on('close', () => {
console.info("on close success")
});
}); off(type: 'close', callback?: Callback<void>): void
取消订阅LocalSocketConnection的关闭事件。使用callback异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 取消订阅的事件类型。'close':关闭事件。 |
| callback | Callback<void> | 否 | 回调函数。可以指定传入on中的callback取消对应的订阅,也可以不指定callback清空所有订阅。 |
错误码:
以下错误码的详细介绍请参见通用错误码。
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
示例:
import { socket } from '@kit.NetworkKit';
let server: socket.LocalSocketServer = socket.constructLocalSocketServerInstance();
let callback = () => {
console.info("on close success");
}
server.on('connect', (connection: socket.LocalSocketConnection) => {
connection.on('close', callback);
// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
connection.off('close', callback);
connection.off('close');
}); on(type: 'error', callback: ErrorCallback): void
订阅LocalSocketConnection连接的error事件。使用callback异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 订阅的事件类型。'error':error事件。 |
| callback | ErrorCallback | 是 | 以callback的形式异步返回出现错误的结果。 |
错误码:
以下错误码的详细介绍请参见通用错误码。
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
示例:
import { socket } from '@kit.NetworkKit';
let server: socket.LocalSocketServer = socket.constructLocalSocketServerInstance();
server.on('connect', (connection: socket.LocalSocketConnection) => {
connection.on('error', (err: Object) => {
console.error("on error, err:" + JSON.stringify(err))
});
}); off(type: 'error', callback?: ErrorCallback): void
取消订阅LocalSocketConnection连接的error事件。使用callback异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 取消订阅的事件类型。'error':error事件。 |
| callback | ErrorCallback | 否 | 回调函数。可以指定传入on中的callback取消对应的订阅,也可以不指定callback清空所有订阅。 |
错误码:
以下错误码的详细介绍请参见通用错误码。
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
示例:
import { socket } from '@kit.NetworkKit';
let callback = (err: Object) => {
console.error("on error, err: " + JSON.stringify(err));
}
let server: socket.LocalSocketServer = socket.constructLocalSocketServerInstance();
server.on('connect', (connection: socket.LocalSocketConnection) => {
connection.on('error', callback);
// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
connection.off('error', callback);
connection.off('error');
}); constructTLSSocketInstance(): TLSSocket
创建并返回一个TLSSocket对象。
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| TLSSocket | 返回一个TLSSocket对象。 |
示例:
import { socket } from '@kit.NetworkKit';
let tls: socket.TLSSocket = socket.constructTLSSocketInstance(); constructTLSSocketInstance(tcpSocket: TCPSocket): TLSSocket
将TCPSocket升级为TLSSocket,创建并返回一个TLSSocket对象。
需要确保TCPSocket已连接,并且当前已经没有传输数据,再调用constructTLSSocketInstance升级TLSSocket。当升级成功后,无需对TCPSocket对象调用close方法。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| tcpSocket | TCPSocket | 是 | 需要进行升级的TCPSocket对象。 |
返回值:
| 类型 | 说明 |
|---|---|
| TLSSocket | 返回一个TLSSocket对象。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 2300002 | System internal error. |
| 2303601 | Invalid socket FD. |
| 2303602 | Socket is not connected. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tcp: socket.TCPSocket = socket.constructTCPSocketInstance();
let netAddress: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let tcpconnectoptions: socket.TCPConnectOptions = {
address: netAddress,
timeout: 6000
}
tcp.connect(tcpconnectoptions, (err: BusinessError) => {
if (err) {
console.error('connect fail');
return;
}
console.info('connect success');
// 确保TCPSocket已连接后,再升级TLSSocket
let tls: socket.TLSSocket = socket.constructTLSSocketInstance(tcp);
}) bind(address: NetAddress, callback: AsyncCallback<void>): void
绑定IP地址和端口。使用callback异步回调。
如果TLSSocket对象是通过TCPSocket对象升级创建的,可以不用执行bind方法。
需要权限:ohos.permission.INTERNET
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| address | NetAddress | 是 | 本端地址信息,参考NetAddress。 |
| callback | AsyncCallback<void> | 是 | 回调函数。成功返回TLSSocket绑定本机的IP地址和端口的结果。失败返回错误码、错误信息。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 201 | Permission denied. |
| 2303198 | Address already in use. |
| 2300002 | System internal error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tls: socket.TLSSocket = socket.constructTLSSocketInstance();
let bindAddr: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
tls.bind(bindAddr, (err: BusinessError) => {
if (err) {
console.error('bind fail');
return;
}
console.info('bind success');
}); bind(address: NetAddress): Promise<void>
绑定IP地址和端口。使用Promise异步回调。
如果TLSSocket对象是通过TCPSocket对象升级创建的,可以不用执行bind方法。
需要权限:ohos.permission.INTERNET
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| address | NetAddress | 是 | 本端地址信息,参考NetAddress。 |
返回值:
| 类型 | 说明 |
|---|---|
| Promise<void> | 以Promise形式返回TLSSocket绑定本机的IP地址和端口的结果。失败返回错误码,错误信息。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 201 | Permission denied. |
| 2303198 | Address already in use. |
| 2300002 | System internal error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tls: socket.TLSSocket = socket.constructTLSSocketInstance();
let bindAddr: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
tls.bind(bindAddr).then(() => {
console.info('bind success');
}).catch((err: BusinessError) => {
console.error('bind fail');
}); getState(callback: AsyncCallback<SocketStateBase>): void
在TLSSocket的bind成功之后,获取TLSSocket状态。使用callback异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| callback | AsyncCallback<SocketStateBase> | 是 | 回调函数。成功返回TLSSocket状态,失败返回错误码、错误信息。 |
错误码:
以下错误码的详细介绍请参见Socket错误码。
| 错误码ID | 错误信息 |
|---|---|
| 2303188 | Socket operation on non-socket. |
| 2300002 | System internal error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tls: socket.TLSSocket = socket.constructTLSSocketInstance();
let bindAddr: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
tls.bind(bindAddr, (err: BusinessError) => {
if (err) {
console.error('bind fail');
return;
}
console.info('bind success');
});
tls.getState((err: BusinessError, data: socket.SocketStateBase) => {
if (err) {
console.error('getState fail');
return;
}
console.info('getState success:' + JSON.stringify(data));
}); getState(): Promise<SocketStateBase>
在TLSSocket的bind成功之后,获取TLSSocket状态。使用Promise异步回调。
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| Promise<SocketStateBase> | Promise对象,返回获取TLSSocket状态的结果。失败返回错误码,错误信息。 |
错误码:
以下错误码的详细介绍请参见Socket错误码。
| 错误码ID | 错误信息 |
|---|---|
| 2303188 | Socket operation on non-socket. |
| 2300002 | System internal error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tls: socket.TLSSocket = socket.constructTLSSocketInstance();
let bindAddr: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
tls.bind(bindAddr, (err: BusinessError) => {
if (err) {
console.error('bind fail');
return;
}
console.info('bind success');
});
tls.getState().then(() => {
console.info('getState success');
}).catch((err: BusinessError) => {
console.error('getState fail');
}); setExtraOptions(options: TCPExtraOptions, callback: AsyncCallback<void>): void
在TLSSocket的bind成功之后,设置TCPSocket连接的其他属性。使用callback异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| options | TCPExtraOptions | 是 | TCPSocket连接的其他属性,参考TCPExtraOptions。 |
| callback | AsyncCallback<void> | 是 | 回调函数。成功返回设置TCPSocket连接的其他属性的结果,失败返回错误码、错误信息。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 2303188 | Socket operation on non-socket. |
| 2300002 | System internal error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tls: socket.TLSSocket = socket.constructTLSSocketInstance();
let bindAddr: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
tls.bind(bindAddr, (err: BusinessError) => {
if (err) {
console.error('bind fail');
return;
}
console.info('bind success');
});
interface SocketLinger {
on: boolean;
linger: number;
}
let tcpExtraOptions: socket.TCPExtraOptions = {
keepAlive: true,
OOBInline: true,
TCPNoDelay: true,
socketLinger: { on: true, linger: 10 } as SocketLinger,
receiveBufferSize: 8192,
sendBufferSize: 8192,
reuseAddress: true,
socketTimeout: 3000,
tcpFastOpen: false
}
tls.setExtraOptions(tcpExtraOptions, (err: BusinessError) => {
if (err) {
console.error('setExtraOptions fail');
return;
}
console.info('setExtraOptions success');
}); setExtraOptions(options: TCPExtraOptions): Promise<void>
在TLSSocket的bind成功之后,设置TCPSocket连接的其他属性。使用Promise异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| options | TCPExtraOptions | 是 | TCPSocket连接的其他属性,参考TCPExtraOptions。 |
返回值:
| 类型 | 说明 |
|---|---|
| Promise<void> | Promise对象。无返回结果的Promise对象。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 2303188 | Socket operation on non-socket. |
| 2300002 | System internal error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tls: socket.TLSSocket = socket.constructTLSSocketInstance();
let bindAddr: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
tls.bind(bindAddr, (err: BusinessError) => {
if (err) {
console.error('bind fail');
return;
}
console.info('bind success');
});
interface SocketLinger {
on: boolean;
linger: number;
}
let tcpExtraOptions: socket.TCPExtraOptions = {
keepAlive: true,
OOBInline: true,
TCPNoDelay: true,
socketLinger: { on: true, linger: 10 } as SocketLinger,
receiveBufferSize: 8192,
sendBufferSize: 8192,
reuseAddress: true,
socketTimeout: 3000,
tcpFastOpen: false
}
tls.setExtraOptions(tcpExtraOptions).then(() => {
console.info('setExtraOptions success');
}).catch((err: BusinessError) => {
console.error('setExtraOptions fail');
}); on(type: 'message', callback: Callback<SocketMessageInfo>): void
订阅TLSSocket连接的接收消息事件。使用callback异步回调。
bind方法调用成功后,才可调用此方法。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 订阅的事件类型。'message':接收消息事件。 |
| callback | Callback<SocketMessageInfo> | 是 | 回调函数。TLSSocket连接订阅某类接收消息事件触发的调用函数,返回TLSSocket连接信息。 |
错误码:
以下错误码的详细介绍请参见通用错误码。
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tls: socket.TLSSocket = socket.constructTLSSocketInstance();
let bindAddr: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
tls.bind(bindAddr, (err: BusinessError) => {
if (err) {
console.error('bind fail');
return;
}
console.info('bind success');
tls.on('message', (value: socket.SocketMessageInfo) => {
let messageView = '';
let uint8Array = new Uint8Array(value.message);
for (let i: number = 0; i < value.message.byteLength; i++) {
let messages = uint8Array[i];
let message = String.fromCharCode(messages);
messageView += message;
}
console.info('on message message: ' + JSON.stringify(messageView));
console.info('remoteInfo: ' + JSON.stringify(value.remoteInfo));
});
}); off(type: 'message', callback?: Callback<SocketMessageInfo>): void
取消订阅TLSSocket连接的接收消息事件。使用callback异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 订阅的事件类型。'message':接收消息事件。 |
| callback | Callback<SocketMessageInfo> | 否 | 回调函数。TLSSocket连接取消订阅某类接收消息事件触发的调用函数,返回TLSSocket连接信息。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tls: socket.TLSSocket = socket.constructTLSSocketInstance();
let messageView = '';
let callback = (value: socket.SocketMessageInfo) => {
for (let i: number = 0; i < value.message.byteLength; i++) {
let uint8Array = new Uint8Array(value.message)
let messages = uint8Array[i]
let message = String.fromCharCode(messages);
messageView += message;
}
console.info('on message message: ' + JSON.stringify(messageView));
console.info('remoteInfo: ' + JSON.stringify(value.remoteInfo));
}
tls.on('message', callback);
// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
tls.off('message', callback); on(type: 'connect' | 'close', callback: Callback<void>): void
订阅TLSSocket的连接事件或关闭事件。使用callback异步回调。
bind方法调用成功后,才可调用此方法。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 订阅的事件类型。 - 'connect':连接事件。 - 'close':关闭事件。 |
| callback | Callback<void> | 是 | 回调函数。TLSSocket连接订阅某类事件触发的调用函数。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tls: socket.TLSSocket = socket.constructTLSSocketInstance();
let bindAddr: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
tls.bind(bindAddr, (err: BusinessError) => {
if (err) {
console.error('bind fail');
return;
}
console.info('bind success');
tls.on('connect', () => {
console.info("on connect success")
});
tls.on('close', () => {
console.info("on close success")
});
}); off(type: 'connect' | 'close', callback?: Callback<void>): void
取消订阅TLSSocket的连接事件或关闭事件。使用callback异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 订阅的事件类型。 - 'connect':连接事件。 - 'close':关闭事件。 |
| callback | Callback<void> | 否 | 回调函数。TLSSocket连接订阅某类事件触发的调用函数。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tls: socket.TLSSocket = socket.constructTLSSocketInstance();
let callback1 = () => {
console.info("on connect success");
}
tls.on('connect', callback1);
// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
tls.off('connect', callback1);
tls.off('connect');
let callback2 = () => {
console.info("on close success");
}
tls.on('close', callback2);
// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
tls.off('close', callback2); on(type: 'error', callback: ErrorCallback): void
订阅TLSSocket连接的error事件。使用callback异步回调。
bind方法调用成功后,才可调用此方法。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 订阅的事件类型。'error':error事件。 |
| callback | ErrorCallback | 是 | 回调函数。TLSSocket连接订阅某类error事件触发的调用函数。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tls: socket.TLSSocket = socket.constructTLSSocketInstance();
let bindAddr: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
tls.bind(bindAddr, (err: BusinessError) => {
if (err) {
console.error('bind fail');
return;
}
console.info('bind success');
tls.on('error', (err: BusinessError) => {
console.error("on error, err:" + JSON.stringify(err))
});
}); off(type: 'error', callback?: ErrorCallback): void
取消订阅TLSSocket连接的error事件。使用callback异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 订阅的事件类型。'error':error事件。 |
| callback | ErrorCallback | 否 | 回调函数。TLSSocket连接取消订阅某类error事件触发的调用函数。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tls: socket.TLSSocket = socket.constructTLSSocketInstance();
let callback = (err: BusinessError) => {
console.error("on error, err:" + JSON.stringify(err));
}
tls.on('error', callback);
// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
tls.off('error', callback); connect(options: TLSConnectOptions, callback: AsyncCallback<void>): void
在TLSSocket上bind成功之后,进行通信连接,并创建和初始化TLS会话,实现建立连接过程,启动与服务器的TLS/SSL握手,实现数据传输功能,使用callback异步回调。需要注意options入参下secureOptions内的ca在API11及之前的版本为必填项,需填入服务端的ca证书(用于认证校验服务端的数字证书),证书内容以"-----BEGIN CERTIFICATE-----"开头,以"-----END CERTIFICATE-----"结尾,自API12开始,为非必填项。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| options | TLSConnectOptions | 是 | TLSSocket连接所需要的参数。 |
| callback | AsyncCallback<void> | 是 | 回调函数,成功无返回,失败返回错误码、错误信息。 |
错误码:
| 错误码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 | Incorrect socket protocol type. |
| 2303198 | Address already in use. |
| 2303199 | Cannot assign requested address. |
| 2303210 | Connection timed out. |
| 2303501 | SSL is null. |
| 2303502 | An error occurred when reading data on the TLS socket. |
| 2303503 | An error occurred when writing data on the TLS socket. |
| 2303505 | An error occurred in the TLS system call. |
| 2303506 | Failed to close the TLS connection. |
| 2300002 | System internal error. |
| 2301206 | Socks5 failed to connect to the proxy server. 适用版本:18+ |
| 2301207 | Socks5 username or password is invalid. 适用版本:18+ |
| 2301208 | Socks5 failed to connect to the remote server. 适用版本:18+ |
| 2301209 | Socks5 failed to negotiate the authentication method. 适用版本:18+ |
| 2301210 | Socks5 failed to send the message. 适用版本:18+ |
| 2301211 | Socks5 failed to receive the message. 适用版本:18+ |
| 2301212 | Socks5 serialization error. 适用版本:18+ |
| 2301213 | Socks5 deserialization error. 适用版本:18+ |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tlsTwoWay: socket.TLSSocket = socket.constructTLSSocketInstance(); // Two way authentication
let bindAddr: socket.NetAddress = {
address: '192.168.xx.xxx',
// 绑定指定网络接口
}
tlsTwoWay.bind(bindAddr, (err: BusinessError) => {
if (err) {
console.error('bind fail');
return;
}
console.info('bind success');
});
let twoWayNetAddr: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let twoWaySecureOptions: socket.TLSSecureOptions = {
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 tlsConnectOptions: socket.TLSConnectOptions = {
address: twoWayNetAddr,
secureOptions: twoWaySecureOptions,
ALPNProtocols: ["spdy/1", "http/1.1"]
}
tlsTwoWay.connect(tlsConnectOptions, (err: BusinessError) => {
console.error("connect callback error" + err);
});
let tlsOneWay: socket.TLSSocket = socket.constructTLSSocketInstance(); // One way authentication
tlsOneWay.bind(bindAddr, (err: BusinessError) => {
if (err) {
console.error('bind fail');
return;
}
console.info('bind success');
});
let oneWayNetAddr: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let oneWaySecureOptions: socket.TLSSecureOptions = {
ca: ["xxxx", "xxxx"],
cipherSuite: "AES256-SHA256"
}
let tlsOneWayConnectOptions: socket.TLSConnectOptions = {
address: oneWayNetAddr,
secureOptions: oneWaySecureOptions
}
tlsOneWay.connect(tlsOneWayConnectOptions, (err: BusinessError) => {
console.error("connect callback error" + err);
}); 示例(设置socket代理):
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tlsTwoWay: socket.TLSSocket = socket.constructTLSSocketInstance(); // 双向认证
let bindAddr: socket.NetAddress = {
address: '192.168.xx.xxx',
// 绑定指定网络接口
}
tlsTwoWay.bind(bindAddr, (err: BusinessError) => {
if (err) {
console.error('bind fail');
return;
}
console.info('bind success');
});
let twoWayNetAddr: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let socks5Server: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let twoWaySecureOptions: socket.TLSSecureOptions = {
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 proxyOptions: socket.ProxyOptions = {
type : 1,
address: socks5Server,
username: "xxx",
password: "xxx"
}
let tlsConnectOptions: socket.TLSConnectOptions = {
address: twoWayNetAddr,
secureOptions: twoWaySecureOptions,
ALPNProtocols: ["spdy/1", "http/1.1"],
proxy: proxyOptions,
}
tlsTwoWay.connect(tlsConnectOptions, (err: BusinessError) => {
console.error("connect callback error" + err);
});
let tlsOneWay: socket.TLSSocket = socket.constructTLSSocketInstance(); // 单向认证
tlsOneWay.bind(bindAddr, (err: BusinessError) => {
if (err) {
console.error('bind fail');
return;
}
console.info('bind success');
});
let oneWayNetAddr: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let oneWaySecureOptions: socket.TLSSecureOptions = {
ca: ["xxxx", "xxxx"],
cipherSuite: "AES256-SHA256"
}
let oneWayProxyOptions: socket.ProxyOptions = {
type : 1,
address: socks5Server,
username: "xxx",
password: "xxx"
}
let tlsOneWayConnectOptions: socket.TLSConnectOptions = {
address: oneWayNetAddr,
secureOptions: oneWaySecureOptions,
proxy: oneWayProxyOptions,
}
tlsOneWay.connect(tlsOneWayConnectOptions, (err: BusinessError) => {
console.error("connect callback error" + err);
}); connect(options: TLSConnectOptions): Promise<void>
在TLSSocket上bind成功之后,进行通信连接,并创建和初始化TLS会话,实现建立连接过程,启动与服务器的TLS/SSL握手,实现数据传输功能,该连接包括两种认证方式,单向认证与双向认证,使用Promise异步回调。需要注意options入参下secureOptions内的ca在API11及之前的版本为必填项,需填入服务端的ca证书(用于认证校验服务端的数字证书),证书内容以"-----BEGIN CERTIFICATE-----"开头,以"-----END CERTIFICATE-----"结尾,自API12开始,为非必填项。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| options | TLSConnectOptions | 是 | 连接所需要的参数。 |
返回值:
| 类型 | 说明 |
|---|---|
| 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 | Incorrect socket protocol type. |
| 2303198 | Address already in use. |
| 2303199 | Cannot assign requested address. |
| 2303210 | Connection timed out. |
| 2303501 | SSL is null. |
| 2303502 | An error occurred when reading data on the TLS socket. |
| 2303503 | An error occurred when writing data on the TLS socket. |
| 2303505 | An error occurred in the TLS system call. |
| 2303506 | Failed to close the TLS connection. |
| 2300002 | System internal error. |
| 2301206 | Socks5 failed to connect to the proxy server. 适用版本:18+ |
| 2301207 | Socks5 username or password is invalid. 适用版本:18+ |
| 2301208 | Socks5 failed to connect to the remote server. 适用版本:18+ |
| 2301209 | Socks5 failed to negotiate the authentication method. 适用版本:18+ |
| 2301210 | Socks5 failed to send the message. 适用版本:18+ |
| 2301211 | Socks5 failed to receive the message. 适用版本:18+ |
| 2301212 | Socks5 serialization error. 适用版本:18+ |
| 2301213 | Socks5 deserialization error. 适用版本:18+ |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tlsTwoWay: socket.TLSSocket = socket.constructTLSSocketInstance(); // Two way authentication
let bindAddr: socket.NetAddress = {
address: '192.168.xx.xxx',
// 绑定指定网络接口
}
tlsTwoWay.bind(bindAddr, (err: BusinessError) => {
if (err) {
console.error('bind fail');
return;
}
console.info('bind success');
});
let twoWayNetAddr: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let twoWaySecureOptions: socket.TLSSecureOptions = {
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 tlsConnectOptions: socket.TLSConnectOptions = {
address: twoWayNetAddr,
secureOptions: twoWaySecureOptions,
ALPNProtocols: ["spdy/1", "http/1.1"]
}
tlsTwoWay.connect(tlsConnectOptions).then(() => {
console.info("connect successfully");
}).catch((err: BusinessError) => {
console.error("connect failed " + JSON.stringify(err));
});
let tlsOneWay: socket.TLSSocket = socket.constructTLSSocketInstance(); // One way authentication
tlsOneWay.bind(bindAddr, (err: BusinessError) => {
if (err) {
console.error('bind fail');
return;
}
console.info('bind success');
});
let oneWayNetAddr: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let oneWaySecureOptions: socket.TLSSecureOptions = {
ca: ["xxxx", "xxxx"],
cipherSuite: "AES256-SHA256"
}
let tlsOneWayConnectOptions: socket.TLSConnectOptions = {
address: oneWayNetAddr,
secureOptions: oneWaySecureOptions
}
tlsOneWay.connect(tlsOneWayConnectOptions).then(() => {
console.info("connect successfully");
}).catch((err: BusinessError) => {
console.error("connect failed " + JSON.stringify(err));
}); 示例(设置socket代理):
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tlsTwoWay: socket.TLSSocket = socket.constructTLSSocketInstance(); // 双向认证
let bindAddr: socket.NetAddress = {
address: '192.168.xx.xxx',
// 绑定指定网络接口
}
tlsTwoWay.bind(bindAddr, (err: BusinessError) => {
if (err) {
console.error('bind fail');
return;
}
console.info('bind success');
});
let twoWayNetAddr: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let socks5Server: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let twoWaySecureOptions: socket.TLSSecureOptions = {
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 proxyOptions: socket.ProxyOptions = {
type : 1,
address: socks5Server,
username: "xxx",
password: "xxx"
}
let tlsConnectOptions: socket.TLSConnectOptions = {
address: twoWayNetAddr,
secureOptions: twoWaySecureOptions,
ALPNProtocols: ["spdy/1", "http/1.1"],
proxy: proxyOptions,
}
tlsTwoWay.connect(tlsConnectOptions).then(() => {
console.info("connect successfully");
}).catch((err: BusinessError) => {
console.error("connect failed " + JSON.stringify(err));
});
let tlsOneWay: socket.TLSSocket = socket.constructTLSSocketInstance(); // 单向认证
tlsOneWay.bind(bindAddr, (err: BusinessError) => {
if (err) {
console.error('bind fail');
return;
}
console.info('bind success');
});
let oneWayNetAddr: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let oneWaySecureOptions: socket.TLSSecureOptions = {
ca: ["xxxx", "xxxx"],
cipherSuite: "AES256-SHA256"
}
let oneWayProxyOptions: socket.ProxyOptions = {
type : 1,
address: socks5Server,
username: "xxx",
password: "xxx"
}
let tlsOneWayConnectOptions: socket.TLSConnectOptions = {
address: oneWayNetAddr,
secureOptions: oneWaySecureOptions,
proxy: oneWayProxyOptions,
}
tlsOneWay.connect(tlsOneWayConnectOptions).then(() => {
console.info("connect successfully");
}).catch((err: BusinessError) => {
console.error("connect failed " + JSON.stringify(err));
}); getRemoteAddress(callback: AsyncCallback<NetAddress>): void
在TLSSocket通信连接成功之后,获取对端Socket地址。使用callback异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| callback | AsyncCallback<NetAddress> | 是 | 回调函数。成功返回对端的socket地址,失败返回错误码、错误信息。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 2303188 | Socket operation on non-socket. |
| 2300002 | System internal error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tls: socket.TLSSocket = socket.constructTLSSocketInstance();
tls.getRemoteAddress((err: BusinessError, data: socket.NetAddress) => {
if (err) {
console.error('getRemoteAddress fail');
return;
}
console.info('getRemoteAddress success:' + JSON.stringify(data));
}); getRemoteAddress(): Promise<NetAddress>
在TLSSocket通信连接成功之后,获取对端Socket地址。使用Promise异步回调。
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| Promise<NetAddress> | Promise对象,返回获取对端socket地址的结果。失败返回错误码,错误信息。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 2303188 | Socket operation on non-socket. |
| 2300002 | System internal error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tls: socket.TLSSocket = socket.constructTLSSocketInstance();
tls.getRemoteAddress().then(() => {
console.info('getRemoteAddress success');
}).catch((err: BusinessError) => {
console.error('getRemoteAddress fail');
}); getCertificate(callback: AsyncCallback<X509CertRawData>): void
在TLSSocket通信连接成功之后,获取本地的数字证书,该接口只适用于双向认证时,使用callback异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| callback | AsyncCallback<X509CertRawData> | 是 | 回调函数,成功返回本地的证书,失败返回错误码、错误信息。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 2303501 | SSL is null. |
| 2303504 | An error occurred when verifying the X.509 certificate. |
| 2300002 | System internal error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tls: socket.TLSSocket = socket.constructTLSSocketInstance();
tls.getCertificate((err: BusinessError, data: socket.X509CertRawData) => {
if (err) {
console.error("getCertificate callback error = " + err);
} else {
console.info("getCertificate callback = " + data);
}
}); getCertificate():Promise<X509CertRawData>
在TLSSocket通信连接之后,获取本地的数字证书,该接口只适用于双向认证时,使用Promise异步回调。
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| Promise<X509CertRawData> | Promise对象,返回本地的数字证书的结果。失败返回错误码,错误信息。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 2303501 | SSL is null. |
| 2303504 | An error occurred when verifying the X.509 certificate. |
| 2300002 | System internal error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { util } from '@kit.ArkTS';
let tls: socket.TLSSocket = socket.constructTLSSocketInstance();
tls.getCertificate().then((data: socket.X509CertRawData) => {
const decoder = util.TextDecoder.create();
const str = decoder.decodeToString(data.data);
console.info("getCertificate: " + str);
}).catch((err: BusinessError) => {
console.error("failed" + err);
}); getRemoteCertificate(callback: AsyncCallback<X509CertRawData>): void
在TLSSocket通信连接成功之后,获取服务端的数字证书,使用callback异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| callback | AsyncCallback<X509CertRawData> | 是 | 回调函数,返回服务端的证书。失败返回错误码、错误信息。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 2303501 | SSL is null. |
| 2300002 | System internal error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { util } from '@kit.ArkTS';
let tls: socket.TLSSocket = socket.constructTLSSocketInstance();
tls.getRemoteCertificate((err: BusinessError, data: socket.X509CertRawData) => {
if (err) {
console.error("getRemoteCertificate callback error = " + err);
} else {
const decoder = util.TextDecoder.create();
const str = decoder.decodeToString(data.data);
console.info("getRemoteCertificate callback = " + str);
}
}); getRemoteCertificate():Promise<X509CertRawData>
在TLSSocket通信连接成功之后,获取服务端的数字证书,使用Promise异步回调。
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| Promise<X509CertRawData> | Promise对象,返回服务端的数字证书的结果。失败返回错误码,错误信息。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 2303501 | SSL is null. |
| 2300002 | System internal error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { util } from '@kit.ArkTS';
let tls: socket.TLSSocket = socket.constructTLSSocketInstance();
tls.getRemoteCertificate().then((data: socket.X509CertRawData) => {
const decoder = util.TextDecoder.create();
const str = decoder.decodeToString(data.data);
console.info("getRemoteCertificate:" + str);
}).catch((err: BusinessError) => {
console.error("failed" + err);
}); getProtocol(callback: AsyncCallback<string>): void
在TLSSocket通信连接成功之后,获取通信的协议版本,使用callback异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| callback | AsyncCallback<string> | 是 | 回调函数,返回通信的协议。失败返回错误码、错误信息。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 2303501 | SSL is null. |
| 2303505 | An error occurred in the TLS system call. |
| 2300002 | System internal error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tls: socket.TLSSocket = socket.constructTLSSocketInstance();
tls.getProtocol((err: BusinessError, data: string) => {
if (err) {
console.error("getProtocol callback error = " + err);
} else {
console.info("getProtocol callback = " + data);
}
}); getProtocol():Promise<string>
在TLSSocket通信连接成功之后,获取通信的协议版本,使用Promise异步回调。
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| Promise<string> | Promise对象,返回通信的协议。失败返回错误码,错误信息。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 2303501 | SSL is null. |
| 2303505 | An error occurred in the TLS system call. |
| 2300002 | System internal error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tls: socket.TLSSocket = socket.constructTLSSocketInstance();
tls.getProtocol().then((data: string) => {
console.info(data);
}).catch((err: BusinessError) => {
console.error("failed" + err);
}); getCipherSuite(callback: AsyncCallback<Array<string>>): void
在TLSSocket通信连接成功之后,获取通信双方协商后的加密套件,使用callback异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| callback | AsyncCallback<Array<string>> | 是 | 回调函数,返回通信双方支持的加密套件。失败返回错误码、错误信息。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 2303501 | SSL is null. |
| 2303502 | An error occurred when reading data on the TLS socket. |
| 2303505 | An error occurred in the TLS system call. |
| 2300002 | System internal error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tls: socket.TLSSocket = socket.constructTLSSocketInstance();
tls.getCipherSuite((err: BusinessError, data: Array<string>) => {
if (err) {
console.error("getCipherSuite callback error = " + err);
} else {
console.info("getCipherSuite callback = " + data);
}
}); getCipherSuite(): Promise<Array<string>>
在TLSSocket通信连接成功之后,获取通信双方协商后的加密套件,使用Promise异步回调。
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| Promise<Array<string>> | Promise对象,返回通信双方支持的加密套件。失败返回错误码,错误信息。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 2303501 | SSL is null. |
| 2303502 | An error occurred when reading data on the TLS socket. |
| 2303505 | An error occurred in the TLS system call. |
| 2300002 | System internal error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tls: socket.TLSSocket = socket.constructTLSSocketInstance();
tls.getCipherSuite().then((data: Array<string>) => {
console.info('getCipherSuite success:' + JSON.stringify(data));
}).catch((err: BusinessError) => {
console.error("failed" + err);
}); getSignatureAlgorithms(callback: AsyncCallback<Array<string>>): void
在TLSSocket通信连接成功之后,获取通信双方协商后签名算法,该接口只适配双向认证模式下,使用callback异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| callback | AsyncCallback<Array<string>> | 是 | 回调函数,返回双方支持的签名算法。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 2303501 | SSL is null. |
| 2300002 | System internal error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tls: socket.TLSSocket = socket.constructTLSSocketInstance();
tls.getSignatureAlgorithms((err: BusinessError, data: Array<string>) => {
if (err) {
console.error("getSignatureAlgorithms callback error = " + err);
} else {
console.info("getSignatureAlgorithms callback = " + data);
}
}); getSignatureAlgorithms(): Promise<Array<string>>
在TLSSocket通信连接成功之后,获取通信双方协商后的签名算法,该接口只适配双向认证模式下,使用Promise异步回调。
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| Promise<Array<string>> | Promise对象,返回获取到的双方支持的签名算法。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 2303501 | SSL is null. |
| 2300002 | System internal error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tls: socket.TLSSocket = socket.constructTLSSocketInstance();
tls.getSignatureAlgorithms().then((data: Array<string>) => {
console.info("getSignatureAlgorithms success" + data);
}).catch((err: BusinessError) => {
console.error("failed" + err);
}); getLocalAddress(): Promise<NetAddress>
获取TLSSocket的本地Socket地址。使用Promise异步回调。
在TLSSocketServer通信连接成功之后,才可调用此方法。
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| Promise<NetAddress> | 以Promise形式返回获取本地socket地址的结果。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 2300002 | System internal error. |
| 2301009 | Bad file descriptor. |
| 2303188 | Socket operation on non-socket. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tls: socket.TLSSocket = socket.constructTLSSocketInstance();
tls.getLocalAddress().then((localAddress: socket.NetAddress) => {
console.info("Get success: " + JSON.stringify(localAddress));
}).catch((err: BusinessError) => {
console.error("Get failed, error: " + JSON.stringify(err));
}) getSocketFd(): Promise<number>
获取TLSSocket的文件描述符。使用Promise异步回调。
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| Promise<number> | Promise对象,返回socket的文件描述符。 |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tls: socket.TLSSocket = socket.constructTLSSocketInstance();
let bindAddr: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
tls.bind(bindAddr, (err: BusinessError) => {
if (err) {
console.error('bind fail');
return;
}
console.info('bind success');
});
tls.getSocketFd().then((data: number) => {
console.info("tls socket fd: " + data);
}) send(data: string | ArrayBuffer, callback: AsyncCallback<void>): void
在TLSSocket通信连接成功之后,向服务端发送消息,使用callback异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| data | string | ArrayBuffer | 是 | 发送的数据内容。 |
| callback | AsyncCallback<void> | 是 | 回调函数,返回TLSSocket发送数据的结果。失败返回错误码、错误信息。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 2303501 | SSL is null. |
| 2303503 | An error occurred when writing data on the TLS socket. |
| 2303505 | An error occurred in the TLS system call. |
| 2303506 | Failed to close the TLS connection. |
| 2300002 | System internal error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tls: socket.TLSSocket = socket.constructTLSSocketInstance();
tls.send("xxxx", (err: BusinessError) => {
if (err) {
console.error("send callback error = " + err);
} else {
console.info("send success");
}
}); send(data: string | ArrayBuffer): Promise<void>
在TLSSocket通信连接成功之后,向服务端发送消息,使用Promise异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| data | string | ArrayBuffer | 是 | 发送的数据内容。 |
返回值:
| 类型 | 说明 |
|---|---|
| Promise<void> | 以Promise形式返回,返回TLSSocket发送数据的结果。失败返回错误码,错误信息。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 2303501 | SSL is null. |
| 2303503 | An error occurred when writing data on the TLS socket. |
| 2303505 | An error occurred in the TLS system call. |
| 2303506 | Failed to close the TLS connection. |
| 2300002 | System internal error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tls: socket.TLSSocket = socket.constructTLSSocketInstance();
tls.send("xxxx").then(() => {
console.info("send success");
}).catch((err: BusinessError) => {
console.error("failed" + err);
}); close(callback: AsyncCallback<void>): void
在TLSSocket通信连接成功之后,断开连接,使用callback异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| callback | AsyncCallback<void> | 是 | 回调函数,成功返回TLSSocket关闭连接的结果。失败返回错误码、错误信息。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 2303501 | SSL is null. |
| 2303505 | An error occurred in the TLS system call. |
| 2303506 | Failed to close the TLS connection. |
| 2300002 | System internal error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tls: socket.TLSSocket = socket.constructTLSSocketInstance();
tls.close((err: BusinessError) => {
if (err) {
console.error("close callback error = " + err);
} else {
console.info("close success");
}
}); close(): Promise<void>
在TLSSocket通信连接成功之后,断开连接,使用Promise异步回调。
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| Promise<void> | 以Promise形式返回,返回TLSSocket关闭连接的结果。失败返回错误码,错误信息。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 2303501 | SSL is null. |
| 2303505 | An error occurred in the TLS system call. |
| 2303506 | Failed to close the TLS connection. |
| 2300002 | System internal error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tls: socket.TLSSocket = socket.constructTLSSocketInstance();
tls.close().then(() => {
console.info("close success");
}).catch((err: BusinessError) => {
console.error("failed" + err);
}); TLS连接的操作。
系统能力:SystemCapability.Communication.NetStack
| 名称 | 类型 | 只读 | 可选 | 说明 |
|---|---|---|---|---|
| address | NetAddress | 否 | 否 | 网关地址。 |
| secureOptions | TLSSecureOptions | 否 | 否 | TLS安全相关操作。 |
| ALPNProtocols | Array<string> | 否 | 是 | ALPN协议,支持["spdy/1", "http/1.1"],默认为[]。 |
| skipRemoteValidation12+ | boolean | 否 | 是 | 是否跳过对服务端进行证书认证,默认为false。true:跳过对服务端进行证书认证;false:不跳过对服务端进行证书认证。 |
| proxy18+ | ProxyOptions | 否 | 是 | 使用的代理信息,默认不使用代理。 |
| timeout22+ | number | 否 | 是 | 连接超时时间,单位:ms,默认为0。传入值需为0-4294967295范围内的整数。TLSSocket连接在超时后会失败。 |
TLS安全相关操作。当本地证书cert和私钥key不为空时,开启双向验证模式。cert和key其中一项为空时,开启单向验证模式。
系统能力:SystemCapability.Communication.NetStack
| 名称 | 类型 | 只读 | 可选 | 说明 |
|---|---|---|---|---|
| ca | string | Array<string> | 否 | 是 | 服务端的ca证书,用于认证校验服务端的数字证书。从API version 12开始,默认为系统预置CA证书。最多支持设置1000本证书。 |
| cert | string | Array<string> | 否 | 是 | 本地客户端的数字证书。从API version 24开始支持传入数组,最多支持设置1000本证书。 |
| key | string | 否 | 是 | 本地数字证书的私钥。 |
| password | string | 否 | 是 | 读取私钥的密码。 |
| protocols | Protocol | Array<Protocol> | 否 | 是 | TLS的协议版本,默认为"TLSv1.2"。 |
| useRemoteCipherPrefer | boolean | 否 | 是 | 优先使用对等方的密码套件。true:优先使用对等方的密码套件;false:不优先使用对等方的密码套件。 |
| signatureAlgorithms | string | 否 | 是 | 通信过程中的签名算法,默认为"" 。 |
| cipherSuite | string | 否 | 是 | 通信过程中的加密套件,默认为"" 。 |
| isBidirectionalAuthentication12+ | boolean | 否 | 是 | 用于设置双向认证,默认为false。true:设置双向认证;false:不设置双向认证。 |
TLS通信的协议版本。
系统能力:SystemCapability.Communication.NetStack
| 名称 | 值 | 说明 |
|---|---|---|
| TLSv12 | "TLSv1.2" | 使用TLSv1.2协议通信。 |
| TLSv13 | "TLSv1.3" | 使用TLSv1.3协议通信。 |
type X509CertRawData = cert.EncodingBlob
存储证书的数据。
系统能力:SystemCapability.Communication.NetStack
| 类型 | 说明 |
|---|---|
| cert.EncodingBlob | 提供证书编码blob类型。 |
constructTLSSocketServerInstance(): TLSSocketServer
创建并返回一个TLSSocketServer对象。
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| TLSSocketServer | 返回一个TLSSocketServer对象。 |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tlsServer: socket.TLSSocketServer = socket.constructTLSSocketServerInstance(); TLSSocketServer连接。在调用TLSSocketServer的方法前,需要先通过socket.constructTLSSocketServerInstance创建TLSSocketServer对象。
listen(options: TLSConnectOptions, callback: AsyncCallback<void>): void
绑定IP地址和端口,在TLSSocketServer上bind成功之后,监听客户端的连接,创建和初始化TLS会话,实现建立连接过程,加载证书密钥并验证,使用callback异步回调。
IP地址设置为0.0.0.0时,可以监听本机所有地址。
需要权限:ohos.permission.INTERNET
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| options | TLSConnectOptions | 是 | TLSSocketServer连接所需要的参数。 |
| callback | AsyncCallback<void> | 是 | 回调函数,成功返回空,失败返回错误码、错误信息。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 201 | Permission denied. |
| 2300002 | System internal error. |
| 2303109 | Bad file number. |
| 2303111 | Resource temporarily unavailable. Try again. |
| 2303198 | Address already in use. |
| 2303199 | Cannot assign requested address. |
| 2303501 | SSL is null. |
| 2303502 | An error occurred when reading data on the TLS socket. |
| 2303503 | An error occurred when writing data on the TLS socket. |
| 2303505 | An error occurred in the TLS system call. |
| 2303506 | Failed to close the TLS connection. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tlsServer: socket.TLSSocketServer = socket.constructTLSSocketServerInstance();
let netAddress: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let tlsSecureOptions: socket.TLSSecureOptions = {
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 tlsConnectOptions: socket.TLSConnectOptions = {
address: netAddress,
secureOptions: tlsSecureOptions,
ALPNProtocols: ["spdy/1", "http/1.1"],
skipRemoteValidation: false
}
tlsServer.listen(tlsConnectOptions, (err: BusinessError) => {
console.error("listen callback error" + err);
}); listen(options: TLSConnectOptions): Promise<void>
绑定IP地址和端口,在TLSSocketServer上bind成功之后,监听客户端的连接,并创建和初始化TLS会话,实现建立连接过程,加载证书密钥并验证,使用Promise异步回调。
需要权限:ohos.permission.INTERNET
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| options | TLSConnectOptions | 是 | 连接所需要的参数。 |
返回值:
| 类型 | 说明 |
|---|---|
| Promise<void> | Promise对象,无返回结果。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 201 | Permission denied. |
| 2300002 | System internal error. |
| 2303109 | Bad file number. |
| 2303111 | Resource temporarily unavailable. Try again. |
| 2303198 | Address already in use. |
| 2303199 | Cannot assign requested address. |
| 2303501 | SSL is null. |
| 2303502 | An error occurred when reading data on the TLS socket. |
| 2303503 | An error occurred when writing data on the TLS socket. |
| 2303505 | An error occurred in the TLS system call. |
| 2303506 | Failed to close the TLS connection. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tlsServer: socket.TLSSocketServer = socket.constructTLSSocketServerInstance();
let netAddress: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let tlsSecureOptions: socket.TLSSecureOptions = {
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 tlsConnectOptions: socket.TLSConnectOptions = {
address: netAddress,
secureOptions: tlsSecureOptions,
ALPNProtocols: ["spdy/1", "http/1.1"],
skipRemoteValidation: false
}
tlsServer.listen(tlsConnectOptions).then(() => {
console.info("listen callback success");
}).catch((err: BusinessError) => {
console.error("failed: " + JSON.stringify(err));
}); getState(callback: AsyncCallback<SocketStateBase>): void
在TLSSocketServer的listen成功之后,获取TLSSocketServer状态。使用callback异步回调。
listen方法调用成功后,才可调用此方法。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| callback | AsyncCallback<SocketStateBase> | 是 | 回调函数。成功返回TLSSocketServer状态,失败返回错误码、错误信息。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 2303188 | Socket operation on non-socket. |
| 2300002 | System internal error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tlsServer: socket.TLSSocketServer = socket.constructTLSSocketServerInstance();
let netAddress: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let tlsSecureOptions: socket.TLSSecureOptions = {
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 tlsConnectOptions: socket.TLSConnectOptions = {
address: netAddress,
secureOptions: tlsSecureOptions,
ALPNProtocols: ["spdy/1", "http/1.1"]
}
tlsServer.listen(tlsConnectOptions).then(() => {
console.info("listen callback success");
}).catch((err: BusinessError) => {
console.error("failed: " + JSON.stringify(err));
});
tlsServer.getState((err: BusinessError, data: socket.SocketStateBase) => {
if (err) {
console.error('getState fail');
return;
}
console.info('getState success:' + JSON.stringify(data));
}); getState(): Promise<SocketStateBase>
在TLSSocketServer的listen成功之后,获取TLSSocketServer状态。使用Promise异步回调。
listen方法调用成功后,才可调用此方法。
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| Promise<SocketStateBase> | Promise对象,返回获取TLSSocketServer状态的结果。失败返回错误码,错误信息。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 2303188 | Socket operation on non-socket. |
| 2300002 | System internal error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tlsServer: socket.TLSSocketServer = socket.constructTLSSocketServerInstance();
let netAddress: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let tlsSecureOptions: socket.TLSSecureOptions = {
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 tlsConnectOptions: socket.TLSConnectOptions = {
address: netAddress,
secureOptions: tlsSecureOptions,
ALPNProtocols: ["spdy/1", "http/1.1"]
}
tlsServer.listen(tlsConnectOptions).then(() => {
console.info("listen callback success");
}).catch((err: BusinessError) => {
console.error("failed: " + JSON.stringify(err));
});
tlsServer.getState().then(() => {
console.info('getState success');
}).catch((err: BusinessError) => {
console.error('getState fail');
}); getSocketFd(): Promise<number>
获取TLSSocketServer监听端口绑定的文件描述符。使用Promise异步回调。
需要权限:ohos.permission.INTERNET
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| Promise<number> | Promise对象,返回Socket的文件描述符。 |
错误码:
以下错误码的详细介绍请参见通用错误码。
| 错误码ID | 错误信息 |
|---|---|
| 201 | Permission denied. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tlsServer: socket.TLSSocketServer = socket.constructTLSSocketServerInstance();
let netAddress: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let tlsSecureOptions: socket.TLSSecureOptions = {
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 tlsConnectOptions: socket.TLSConnectOptions = {
address: netAddress,
secureOptions: tlsSecureOptions,
ALPNProtocols: ["spdy/1", "http/1.1"]
}
tlsServer.listen(tlsConnectOptions).then(() => {
console.info("listen success");
tlsServer.getSocketFd().then((fd: number) => {
console.info(`Socket FD:${fd}`);
}).catch((err: BusinessError) => {
console.error(`getSocketFd fail: ${err.message}, errorCode: ${err.code}`);
});
}).catch((err: BusinessError) => {
console.error(`listen failed: ${JSON.stringify(err)}`);
}); setExtraOptions(options: TCPExtraOptions, callback: AsyncCallback<void>): void
在TLSSocketServer的listen成功之后,设置TLSSocketServer连接的其他属性。使用callback异步回调。
listen方法调用成功后,才可调用此方法。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| options | TCPExtraOptions | 是 | TLSSocketServer连接的其他属性。 |
| callback | AsyncCallback<void> | 是 | 回调函数。成功返回空,失败返回错误码、错误信息。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 2303188 | Socket operation on non-socket. |
| 2300002 | System internal error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tlsServer: socket.TLSSocketServer = socket.constructTLSSocketServerInstance();
let netAddress: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let tlsSecureOptions: socket.TLSSecureOptions = {
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 tlsConnectOptions: socket.TLSConnectOptions = {
address: netAddress,
secureOptions: tlsSecureOptions,
ALPNProtocols: ["spdy/1", "http/1.1"]
}
tlsServer.listen(tlsConnectOptions).then(() => {
console.info("listen callback success");
}).catch((err: BusinessError) => {
console.error("failed: " + JSON.stringify(err));
});
interface SocketLinger {
on: boolean;
linger: number;
}
let tcpExtraOptions: socket.TCPExtraOptions = {
keepAlive: true,
OOBInline: true,
TCPNoDelay: true,
socketLinger: { on: true, linger: 10 } as SocketLinger,
receiveBufferSize: 8192,
sendBufferSize: 8192,
reuseAddress: true,
socketTimeout: 3000
}
tlsServer.setExtraOptions(tcpExtraOptions, (err: BusinessError) => {
if (err) {
console.error('setExtraOptions fail');
return;
}
console.info('setExtraOptions success');
}); setExtraOptions(options: TCPExtraOptions): Promise<void>
在TLSSocketServer的listen成功之后,设置TLSSocketServer连接的其他属性,使用Promise异步回调。
listen方法调用成功后,才可调用此方法。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| options | TCPExtraOptions | 是 | TLSSocketServer连接的其他属性。 |
返回值:
| 类型 | 说明 |
|---|---|
| Promise<void> | Promise对象,无返回结果。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 2303188 | Socket operation on non-socket. |
| 2300002 | System internal error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tlsServer: socket.TLSSocketServer = socket.constructTLSSocketServerInstance();
let netAddress: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let tlsSecureOptions: socket.TLSSecureOptions = {
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 tlsConnectOptions: socket.TLSConnectOptions = {
address: netAddress,
secureOptions: tlsSecureOptions,
ALPNProtocols: ["spdy/1", "http/1.1"]
}
tlsServer.listen(tlsConnectOptions).then(() => {
console.info("listen callback success");
}).catch((err: BusinessError) => {
console.error("failed: " + JSON.stringify(err));
});
interface SocketLinger {
on: boolean;
linger: number;
}
let tcpExtraOptions: socket.TCPExtraOptions = {
keepAlive: true,
OOBInline: true,
TCPNoDelay: true,
socketLinger: { on: true, linger: 10 } as SocketLinger,
receiveBufferSize: 8192,
sendBufferSize: 8192,
reuseAddress: true,
socketTimeout: 3000
}
tlsServer.setExtraOptions(tcpExtraOptions).then(() => {
console.info('setExtraOptions success');
}).catch((err: BusinessError) => {
console.error('setExtraOptions fail');
}); getCertificate(callback: AsyncCallback<X509CertRawData>): void
在TLSSocketServer通信连接成功之后,获取本地的数字证书,使用callback异步回调。
listen方法调用成功后,才可调用此方法。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| callback | AsyncCallback<X509CertRawData> | 是 | 回调函数,成功返回本地的证书,失败返回错误码、错误信息。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 2303501 | SSL is null. |
| 2303504 | An error occurred when verifying the X.509 certificate. |
| 2300002 | System internal error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { util } from '@kit.ArkTS';
let tlsServer: socket.TLSSocketServer = socket.constructTLSSocketServerInstance();
let netAddress: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let tlsSecureOptions: socket.TLSSecureOptions = {
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 tlsConnectOptions: socket.TLSConnectOptions = {
address: netAddress,
secureOptions: tlsSecureOptions,
ALPNProtocols: ["spdy/1", "http/1.1"]
}
tlsServer.listen(tlsConnectOptions).then(() => {
console.info("listen callback success");
}).catch((err: BusinessError) => {
console.error("failed: " + JSON.stringify(err));
});
tlsServer.getCertificate((err: BusinessError, data: socket.X509CertRawData) => {
if (err) {
console.error("getCertificate callback error = " + err);
} else {
const decoder = util.TextDecoder.create();
const str = decoder.decodeToString(data.data);
console.info("getCertificate callback: " + str);
}
}); getCertificate():Promise<X509CertRawData>
在TLSSocketServer通信连接之后,获取本地的数字证书,使用Promise异步回调。
listen方法调用成功后,才可调用此方法。
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| Promise<X509CertRawData> | Promise对象,返回本地的数字证书的结果。失败返回错误码,错误信息。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 2303501 | SSL is null. |
| 2303504 | An error occurred when verifying the X.509 certificate. |
| 2300002 | System internal error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { util } from '@kit.ArkTS';
let tlsServer: socket.TLSSocketServer = socket.constructTLSSocketServerInstance();
let netAddress: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let tlsSecureOptions: socket.TLSSecureOptions = {
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 tlsConnectOptions: socket.TLSConnectOptions = {
address: netAddress,
secureOptions: tlsSecureOptions,
ALPNProtocols: ["spdy/1", "http/1.1"]
}
tlsServer.listen(tlsConnectOptions).then(() => {
console.info("listen callback success");
}).catch((err: BusinessError) => {
console.error("failed: " + JSON.stringify(err));
});
tlsServer.getCertificate().then((data: socket.X509CertRawData) => {
const decoder = util.TextDecoder.create();
const str = decoder.decodeToString(data.data);
console.info("getCertificate: " + str);
}).catch((err: BusinessError) => {
console.error("failed" + err);
}); getProtocol(callback: AsyncCallback<string>): void
在TLSSocketServer通信连接成功之后,获取通信的协议版本,使用callback异步回调。
listen方法调用成功后,才可调用此方法。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| callback | AsyncCallback<string> | 是 | 回调函数,返回通信的协议。失败返回错误码、错误信息。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 2303501 | SSL is null. |
| 2303505 | An error occurred in the TLS system call. |
| 2300002 | System internal error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tlsServer: socket.TLSSocketServer = socket.constructTLSSocketServerInstance();
let netAddress: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let tlsSecureOptions: socket.TLSSecureOptions = {
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 tlsConnectOptions: socket.TLSConnectOptions = {
address: netAddress,
secureOptions: tlsSecureOptions,
ALPNProtocols: ["spdy/1", "http/1.1"]
}
tlsServer.listen(tlsConnectOptions).then(() => {
console.info("listen callback success");
}).catch((err: BusinessError) => {
console.error("failed: " + JSON.stringify(err));
});
tlsServer.getProtocol((err: BusinessError, data: string) => {
if (err) {
console.error("getProtocol callback error = " + err);
} else {
console.info("getProtocol callback = " + data);
}
}); getProtocol():Promise<string>
在TLSSocketServer通信连接成功之后,获取通信的协议版本,使用Promise异步回调。
listen方法调用成功后,才可调用此方法。
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| Promise<string> | Promise对象,返回通信的协议。失败返回错误码,错误信息。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 2303501 | SSL is null. |
| 2303505 | An error occurred in the TLS system call. |
| 2300002 | System internal error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tlsServer: socket.TLSSocketServer = socket.constructTLSSocketServerInstance();
let netAddress: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let tlsSecureOptions: socket.TLSSecureOptions = {
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 tlsConnectOptions: socket.TLSConnectOptions = {
address: netAddress,
secureOptions: tlsSecureOptions,
ALPNProtocols: ["spdy/1", "http/1.1"]
}
tlsServer.listen(tlsConnectOptions).then(() => {
console.info("listen callback success");
}).catch((err: BusinessError) => {
console.error("failed: " + JSON.stringify(err));
});
tlsServer.getProtocol().then((data: string) => {
console.info(data);
}).catch((err: BusinessError) => {
console.error("failed" + err);
}); getLocalAddress(): Promise<NetAddress>
获取TLSSocketServer的本地Socket地址。使用Promise异步回调。
在TLSSocketServer通信连接成功之后,才可调用此方法。
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| Promise<NetAddress> | 以Promise形式返回获取本地socket地址的结果。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 2300002 | System internal error. |
| 2301009 | Bad file descriptor. |
| 2303188 | Socket operation on non-socket. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tlsServer: socket.TLSSocketServer = socket.constructTLSSocketServerInstance();
tlsServer.getLocalAddress().then((localAddress: socket.NetAddress) => {
console.info("Get success: " + JSON.stringify(localAddress));
}).catch((err: BusinessError) => {
console.error("Get failed, error: " + JSON.stringify(err));
}) on(type: 'connect', callback: Callback<TLSSocketConnection>): void
订阅TLSSocketServer的连接事件。使用callback异步回调。
listen方法调用成功后,才可调用此方法。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 订阅的事件类型。'connect':连接事件。 |
| callback | Callback<TLSSocketConnection> | 是 | 回调函数。失败时返回错误码、错误信息。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tlsServer: socket.TLSSocketServer = socket.constructTLSSocketServerInstance();
let netAddress: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let tlsSecureOptions: socket.TLSSecureOptions = {
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 tlsConnectOptions: socket.TLSConnectOptions = {
address: netAddress,
secureOptions: tlsSecureOptions,
ALPNProtocols: ["spdy/1", "http/1.1"]
}
tlsServer.listen(tlsConnectOptions).then(() => {
console.info("listen callback success");
tlsServer.on('connect', (data: socket.TLSSocketConnection) => {
console.info(JSON.stringify(data));
});
}).catch((err: BusinessError) => {
console.error("failed: " + JSON.stringify(err));
}); off(type: 'connect', callback?: Callback<TLSSocketConnection>): void
取消订阅TLSSocketServer的连接事件。使用callback异步回调。
listen方法调用成功后,才可调用此方法。
可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 订阅的事件类型。'connect':连接事件。 |
| callback | Callback<TLSSocketConnection> | 否 | 回调函数。失败时返回错误码、错误信息。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tlsServer: socket.TLSSocketServer = socket.constructTLSSocketServerInstance();
let netAddress: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let tlsSecureOptions: socket.TLSSecureOptions = {
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 tlsConnectOptions: socket.TLSConnectOptions = {
address: netAddress,
secureOptions: tlsSecureOptions,
ALPNProtocols: ["spdy/1", "http/1.1"]
}
tlsServer.listen(tlsConnectOptions).then(() => {
console.info("listen callback success");
}).catch((err: BusinessError) => {
console.error("failed: " + JSON.stringify(err));
});
let callback = (data: socket.TLSSocketConnection) => {
console.info('on connect message: ' + JSON.stringify(data));
}
tlsServer.on('connect', callback);
// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
tlsServer.off('connect', callback);
tlsServer.off('connect'); on(type: 'error', callback: ErrorCallback): void
订阅TLSSocketServer连接的error事件。使用callback异步回调。
listen方法调用成功后,才可调用此方法。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 订阅的事件类型。'error':error事件。 |
| callback | ErrorCallback | 是 | 回调函数。失败时返回错误码、错误信息。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tlsServer: socket.TLSSocketServer = socket.constructTLSSocketServerInstance();
let netAddress: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let tlsSecureOptions: socket.TLSSecureOptions = {
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 tlsConnectOptions: socket.TLSConnectOptions = {
address: netAddress,
secureOptions: tlsSecureOptions,
ALPNProtocols: ["spdy/1", "http/1.1"]
}
tlsServer.listen(tlsConnectOptions).then(() => {
console.info("listen callback success");
}).catch((err: BusinessError) => {
console.error("failed: " + JSON.stringify(err));
});
tlsServer.on('error', (err: BusinessError) => {
console.error("on error, err:" + JSON.stringify(err))
}); off(type: 'error', callback?: ErrorCallback): void
取消订阅TLSSocketServer连接的error事件。使用callback异步回调。
listen方法调用成功后,才可调用此方法。
可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 订阅的事件类型。'error':error事件。 |
| callback | ErrorCallback | 否 | 回调函数。失败时返回错误码、错误信息。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tlsServer: socket.TLSSocketServer = socket.constructTLSSocketServerInstance();
let netAddress: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let tlsSecureOptions: socket.TLSSecureOptions = {
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 tlsConnectOptions: socket.TLSConnectOptions = {
address: netAddress,
secureOptions: tlsSecureOptions,
ALPNProtocols: ["spdy/1", "http/1.1"]
}
tlsServer.listen(tlsConnectOptions).then(() => {
console.info("listen callback success");
}).catch((err: BusinessError) => {
console.error("failed: " + JSON.stringify(err));
});
let callback = (err: BusinessError) => {
console.error("on error, err:" + JSON.stringify(err));
}
tlsServer.on('error', callback);
// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
tlsServer.off('error', callback);
tlsServer.off('error'); close(): Promise<void>
TLSSocketServer停止监听并释放通过listen方法绑定的端口。使用Promise异步回调。
需要权限:ohos.permission.INTERNET
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| Promise<void> | Promise对象,无返回结果。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 201 | Permission denied. |
| 2300002 | System internal error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tlsServer: socket.TLSSocketServer = socket.constructTLSSocketServerInstance();
let netAddress: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let tlsSecureOptions: socket.TLSSecureOptions = {
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 tlsConnectOptions: socket.TLSConnectOptions = {
address: netAddress,
secureOptions: tlsSecureOptions,
ALPNProtocols: ["spdy/1", "http/1.1"]
}
tlsServer.on('connect', (connection: socket.TLSSocketConnection) => {
console.info("connection clientId: " + connection.clientId);
// 逻辑处理
tlsServer.close(); // 停止监听
connection.close(); // 关闭当前连接
});
tlsServer.listen(tlsConnectOptions).then(() => {
console.info("listen callback success");
}).catch((err: BusinessError) => {
console.error("listen failed: " + err.code);
}); TLSSocketConnection连接,即TLSSocket客户端与服务端的连接。在调用TLSSocketConnection的方法前,需要先获取TLSSocketConnection对象。
客户端与服务端成功建立连接后,才能通过返回的TLSSocketConnection对象调用相应的接口。
系统能力:SystemCapability.Communication.NetStack
send(data: string | ArrayBuffer, callback: AsyncCallback<void>): void
在TLSSocketServer通信连接成功之后,向客户端发送消息,使用callback异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| data | string | ArrayBuffer | 是 | TLSSocketServer发送数据所需要的参数。 |
| callback | AsyncCallback<void> | 是 | 回调函数,成功返回空,失败返回错误码、错误信息。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 2303501 | SSL is null. |
| 2303503 | An error occurred when writing data on the TLS socket. |
| 2303505 | An error occurred in the TLS system call. |
| 2303506 | Failed to close the TLS connection. |
| 2300002 | System internal error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tlsServer: socket.TLSSocketServer = socket.constructTLSSocketServerInstance();
let netAddress: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let tlsSecureOptions: socket.TLSSecureOptions = {
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 tlsConnectOptions: socket.TLSConnectOptions = {
address: netAddress,
secureOptions: tlsSecureOptions,
ALPNProtocols: ["spdy/1", "http/1.1"]
}
tlsServer.listen(tlsConnectOptions).then(() => {
console.info("listen callback success");
}).catch((err: BusinessError) => {
console.error("failed" + err);
});
tlsServer.on('connect', (client: socket.TLSSocketConnection) => {
client.send('Hello, client!', (err: BusinessError) => {
if (err) {
console.error('send fail');
return;
}
console.info('send success');
});
}); send(data: string | ArrayBuffer): Promise<void>
在TLSSocketServer通信连接成功之后,向服务端发送消息,使用Promise异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| data | string | ArrayBuffer | 是 | TLSSocketServer发送数据所需要的参数。 |
返回值:
| 类型 | 说明 |
|---|---|
| Promise<void> | Promise对象,无返回结果。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 2303501 | SSL is null. |
| 2303503 | An error occurred when writing data on the TLS socket. |
| 2303505 | An error occurred in the TLS system call. |
| 2303506 | Failed to close the TLS connection. |
| 2300002 | System internal error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tlsServer: socket.TLSSocketServer = socket.constructTLSSocketServerInstance();
let netAddress: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let tlsSecureOptions: socket.TLSSecureOptions = {
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 tlsConnectOptions: socket.TLSConnectOptions = {
address: netAddress,
secureOptions: tlsSecureOptions,
ALPNProtocols: ["spdy/1", "http/1.1"]
}
tlsServer.listen(tlsConnectOptions).then(() => {
console.info("listen callback success");
}).catch((err: BusinessError) => {
console.error("failed" + err);
});
tlsServer.on('connect', (client: socket.TLSSocketConnection) => {
client.send('Hello, client!').then(() => {
console.info('send success');
}).catch((err: BusinessError) => {
console.error('send fail');
});
}); close(callback: AsyncCallback<void>): void
在与TLSSocketServer通信连接成功之后,断开连接,使用callback异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| callback | AsyncCallback<void> | 是 | 回调函数,成功返回空,失败返回错误码、错误信息。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 2303501 | SSL is null. |
| 2303505 | An error occurred in the TLS system call. |
| 2303506 | Failed to close the TLS connection. |
| 2300002 | System internal error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tlsServer: socket.TLSSocketServer = socket.constructTLSSocketServerInstance();
let netAddress: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let tlsSecureOptions: socket.TLSSecureOptions = {
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 tlsConnectOptions: socket.TLSConnectOptions = {
address: netAddress,
secureOptions: tlsSecureOptions,
ALPNProtocols: ["spdy/1", "http/1.1"]
}
tlsServer.listen(tlsConnectOptions).then(() => {
console.info("listen callback success");
}).catch((err: BusinessError) => {
console.error("failed" + err);
});
tlsServer.on('connect', (client: socket.TLSSocketConnection) => {
client.close((err: BusinessError) => {
if (err) {
console.error('close fail');
return;
}
console.info('close success');
});
}); close(): Promise<void>
在与TLSSocketServer通信连接成功之后,断开连接,使用Promise异步回调。
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| Promise<void> | Promise对象,无返回结果。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 2303501 | SSL is null. |
| 2303505 | An error occurred in the TLS system call. |
| 2303506 | Failed to close the TLS connection. |
| 2300002 | System internal error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tlsServer: socket.TLSSocketServer = socket.constructTLSSocketServerInstance();
let netAddress: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let tlsSecureOptions: socket.TLSSecureOptions = {
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 tlsConnectOptions: socket.TLSConnectOptions = {
address: netAddress,
secureOptions: tlsSecureOptions,
ALPNProtocols: ["spdy/1", "http/1.1"]
}
tlsServer.listen(tlsConnectOptions).then(() => {
console.info("listen callback success");
}).catch((err: BusinessError) => {
console.error("failed" + err);
});
tlsServer.on('connect', (client: socket.TLSSocketConnection) => {
client.close().then(() => {
console.info('close success');
}).catch((err: BusinessError) => {
console.error('close fail');
});
}); getRemoteAddress(callback: AsyncCallback<NetAddress>): void
在TLSSocketServer通信连接成功之后,获取对端Socket地址。使用callback异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| callback | AsyncCallback<NetAddress> | 是 | 回调函数。成功返回对端的socket地址,失败返回错误码、错误信息。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 2303188 | Socket operation on non-socket. |
| 2300002 | System internal error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tlsServer: socket.TLSSocketServer = socket.constructTLSSocketServerInstance();
let netAddress: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let tlsSecureOptions: socket.TLSSecureOptions = {
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 tlsConnectOptions: socket.TLSConnectOptions = {
address: netAddress,
secureOptions: tlsSecureOptions,
ALPNProtocols: ["spdy/1", "http/1.1"]
}
tlsServer.listen(tlsConnectOptions).then(() => {
console.info("listen callback success");
}).catch((err: BusinessError) => {
console.error("failed" + err);
});
tlsServer.on('connect', (client: socket.TLSSocketConnection) => {
client.getRemoteAddress((err: BusinessError, data: socket.NetAddress) => {
if (err) {
console.error('getRemoteAddress fail');
return;
}
console.info('getRemoteAddress success:' + JSON.stringify(data));
});
}); getRemoteAddress(): Promise<NetAddress>
在TLSSocketServer通信连接成功之后,获取对端Socket地址。使用Promise异步回调。
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| Promise<NetAddress> | Promise对象,返回获取对端socket地址的结果。失败返回错误码,错误信息。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 2303188 | Socket operation on non-socket. |
| 2300002 | System internal error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tlsServer: socket.TLSSocketServer = socket.constructTLSSocketServerInstance();
let netAddress: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let tlsSecureOptions: socket.TLSSecureOptions = {
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 tlsConnectOptions: socket.TLSConnectOptions = {
address: netAddress,
secureOptions: tlsSecureOptions,
ALPNProtocols: ["spdy/1", "http/1.1"]
}
tlsServer.listen(tlsConnectOptions).then(() => {
console.info("listen callback success");
}).catch((err: BusinessError) => {
console.error("failed" + err);
});
tlsServer.on('connect', (client: socket.TLSSocketConnection) => {
client.getRemoteAddress().then((data: socket.NetAddress) => {
console.info('getRemoteAddress success:' + JSON.stringify(data));
}).catch((err: BusinessError) => {
console.error("failed" + err);
});
}); getRemoteCertificate(callback: AsyncCallback<X509CertRawData>): void
在TLSSocketServer通信连接成功之后,获取对端的数字证书,该接口只适用于客户端向服务端发送证书时,使用callback异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| callback | AsyncCallback<X509CertRawData> | 是 | 回调函数,返回对端的证书。失败返回错误码、错误信息。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 2303501 | SSL is null. |
| 2300002 | System internal error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { util } from '@kit.ArkTS';
let tlsServer: socket.TLSSocketServer = socket.constructTLSSocketServerInstance();
let netAddress: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let tlsSecureOptions: socket.TLSSecureOptions = {
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 tlsConnectOptions: socket.TLSConnectOptions = {
address: netAddress,
secureOptions: tlsSecureOptions,
ALPNProtocols: ["spdy/1", "http/1.1"]
}
tlsServer.listen(tlsConnectOptions).then(() => {
console.info("listen callback success");
}).catch((err: BusinessError) => {
console.error("failed" + err);
});
tlsServer.on('connect', (client: socket.TLSSocketConnection) => {
client.getRemoteCertificate((err: BusinessError, data: socket.X509CertRawData) => {
if (err) {
console.error("getRemoteCertificate callback error: " + err);
} else {
const decoder = util.TextDecoder.create();
const str = decoder.decodeToString(data.data);
console.info("getRemoteCertificate callback: " + str);
}
});
}); getRemoteCertificate():Promise<X509CertRawData>
在TLSSocketServer通信连接成功之后,获取对端的数字证书,该接口只适用于客户端向服务端发送证书时,使用Promise异步回调。
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| Promise<X509CertRawData> | Promise对象,返回对端的数字证书的结果。失败返回错误码,错误信息。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 2303501 | SSL is null. |
| 2300002 | System internal error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { util } from '@kit.ArkTS';
let tlsServer: socket.TLSSocketServer = socket.constructTLSSocketServerInstance();
let netAddress: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let tlsSecureOptions: socket.TLSSecureOptions = {
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 tlsConnectOptions: socket.TLSConnectOptions = {
address: netAddress,
secureOptions: tlsSecureOptions,
ALPNProtocols: ["spdy/1", "http/1.1"]
}
tlsServer.listen(tlsConnectOptions).then(() => {
console.info("listen callback success");
}).catch((err: BusinessError) => {
console.error("failed" + err);
});
tlsServer.on('connect', (client: socket.TLSSocketConnection) => {
client.getRemoteCertificate().then((data: socket.X509CertRawData) => {
const decoder = util.TextDecoder.create();
const str = decoder.decodeToString(data.data);
console.info("getRemoteCertificate success: " + str);
}).catch((err: BusinessError) => {
console.error("failed" + err);
});
}); getCipherSuite(callback: AsyncCallback<Array<string>>): void
在TLSSocketServer通信连接成功之后,获取通信双方协商后的加密套件,使用callback异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| callback | AsyncCallback<Array<string>> | 是 | 回调函数,返回通信双方支持的加密套件。失败返回错误码、错误信息。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 2303501 | SSL is null. |
| 2303502 | An error occurred when reading data on the TLS socket. |
| 2303505 | An error occurred in the TLS system call. |
| 2300002 | System internal error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tlsServer: socket.TLSSocketServer = socket.constructTLSSocketServerInstance();
let netAddress: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let tlsSecureOptions: socket.TLSSecureOptions = {
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 tlsConnectOptions: socket.TLSConnectOptions = {
address: netAddress,
secureOptions: tlsSecureOptions,
ALPNProtocols: ["spdy/1", "http/1.1"]
}
tlsServer.listen(tlsConnectOptions).then(() => {
console.info("listen callback success");
}).catch((err: BusinessError) => {
console.error("failed" + err);
});
tlsServer.on('connect', (client: socket.TLSSocketConnection) => {
client.getCipherSuite((err: BusinessError, data: Array<string>) => {
if (err) {
console.error("getCipherSuite callback error = " + err);
} else {
console.info("getCipherSuite callback = " + data);
}
});
}); getCipherSuite(): Promise<Array<string>>
在TLSSocketServer通信连接成功之后,获取通信双方协商后的加密套件,使用Promise异步回调。
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| Promise<Array<string>> | Promise对象,返回通信双方支持的加密套件。失败返回错误码,错误信息。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 2303501 | SSL is null. |
| 2303502 | An error occurred when reading data on the TLS socket. |
| 2303505 | An error occurred in the TLS system call. |
| 2300002 | System internal error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tlsServer: socket.TLSSocketServer = socket.constructTLSSocketServerInstance();
let netAddress: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let tlsSecureOptions: socket.TLSSecureOptions = {
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 tlsConnectOptions: socket.TLSConnectOptions = {
address: netAddress,
secureOptions: tlsSecureOptions,
ALPNProtocols: ["spdy/1", "http/1.1"]
}
tlsServer.listen(tlsConnectOptions).then(() => {
console.info("listen callback success");
}).catch((err: BusinessError) => {
console.error("failed" + err);
});
tlsServer.on('connect', (client: socket.TLSSocketConnection) => {
client.getCipherSuite().then((data: Array<string>) => {
console.info('getCipherSuite success:' + JSON.stringify(data));
}).catch((err: BusinessError) => {
console.error("failed" + err);
});
}); getSignatureAlgorithms(callback: AsyncCallback<Array<string>>): void
在TLSSocketServer通信连接成功之后,获取通信双方协商后签名算法,使用callback异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| callback | AsyncCallback<Array<string>> | 是 | 回调函数,返回双方支持的签名算法。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
| 2303501 | SSL is null. |
| 2300002 | System internal error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tlsServer: socket.TLSSocketServer = socket.constructTLSSocketServerInstance();
let netAddress: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let tlsSecureOptions: socket.TLSSecureOptions = {
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 tlsConnectOptions: socket.TLSConnectOptions = {
address: netAddress,
secureOptions: tlsSecureOptions,
ALPNProtocols: ["spdy/1", "http/1.1"]
}
tlsServer.listen(tlsConnectOptions).then(() => {
console.info("listen callback success");
}).catch((err: BusinessError) => {
console.error("failed" + err);
});
tlsServer.on('connect', (client: socket.TLSSocketConnection) => {
client.getSignatureAlgorithms((err: BusinessError, data: Array<string>) => {
if (err) {
console.error("getSignatureAlgorithms callback error = " + err);
} else {
console.info("getSignatureAlgorithms callback = " + data);
}
});
}); getSignatureAlgorithms(): Promise<Array<string>>
在TLSSocketServer通信连接成功之后,获取通信双方协商后的签名算法,使用Promise异步回调。
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| Promise<Array<string>> | Promise对象,返回获取到的双方支持的签名算法。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 2303501 | SSL is null. |
| 2300002 | System internal error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tlsServer: socket.TLSSocketServer = socket.constructTLSSocketServerInstance();
let netAddress: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let tlsSecureOptions: socket.TLSSecureOptions = {
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 tlsConnectOptions: socket.TLSConnectOptions = {
address: netAddress,
secureOptions: tlsSecureOptions,
ALPNProtocols: ["spdy/1", "http/1.1"]
}
tlsServer.listen(tlsConnectOptions).then(() => {
console.info("listen callback success");
}).catch((err: BusinessError) => {
console.error("failed" + err);
});
tlsServer.on('connect', (client: socket.TLSSocketConnection) => {
client.getSignatureAlgorithms().then((data: Array<string>) => {
console.info("getSignatureAlgorithms success" + data);
}).catch((err: BusinessError) => {
console.error("failed" + err);
});
}); getLocalAddress(): Promise<NetAddress>
获取TLSSocketConnection连接的本地Socket地址。使用Promise异步回调。
在TLSSocketServer通信连接成功之后,才可调用此方法。
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| Promise<NetAddress> | 以Promise形式返回获取本地socket地址的结果。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 2300002 | System internal error. |
| 2301009 | Bad file descriptor. |
| 2303188 | Socket operation on non-socket. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tlsServer: socket.TLSSocketServer = socket.constructTLSSocketServerInstance();
let netAddress: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let tlsSecureOptions: socket.TLSSecureOptions = {
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 tlsConnectOptions: socket.TLSConnectOptions = {
address: netAddress,
secureOptions: tlsSecureOptions,
ALPNProtocols: ["spdy/1", "http/1.1"]
}
tlsServer.listen(tlsConnectOptions).then(() => {
console.info("listen callback success");
}).catch((err: BusinessError) => {
console.error("failed" + err);
});
tlsServer.on('connect', (client: socket.TLSSocketConnection) => {
client.getLocalAddress().then((localAddress: socket.NetAddress) => {
console.info("Family IP Port: " + JSON.stringify(localAddress));
}).catch((err: BusinessError) => {
console.error("TLS Client Get Family IP Port failed, error: " + JSON.stringify(err));
})
}); getSocketFd(): Promise<number>
获取TLSSocketConnection连接的文件描述符。使用Promise异步回调。
需要权限:ohos.permission.INTERNET
系统能力:SystemCapability.Communication.NetStack
返回值:
| 类型 | 说明 |
|---|---|
| Promise<number> | Promise对象,返回Socket的文件描述符。 |
错误码:
以下错误码的详细介绍请参见通用错误码。
| 错误码ID | 错误信息 |
|---|---|
| 201 | Permission denied. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tlsServer: socket.TLSSocketServer = socket.constructTLSSocketServerInstance();
let netAddress: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let tlsSecureOptions: socket.TLSSecureOptions = {
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 tlsConnectOptions: socket.TLSConnectOptions = {
address: netAddress,
secureOptions: tlsSecureOptions,
ALPNProtocols: ["spdy/1", "http/1.1"]
}
tlsServer.listen(tlsConnectOptions).then(() => {
console.info("listen success");
tlsServer.on('connect', (client: socket.TLSSocketConnection) => {
client.getSocketFd().then((fd: number) => {
console.info(`Socket FD:${fd}`);
}).catch((err: BusinessError) => {
console.error(`getSocketFd fail: ${err.message}, errorCode: ${err.code}`);
})
});
}).catch((err: BusinessError) => {
console.error(`listen failed: ${JSON.stringify(err)}`);
}); on(type: 'message', callback: Callback<SocketMessageInfo>): void
订阅TLSSocketConnection连接的接收消息事件。使用callback异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 订阅的事件类型。'message':接收消息事件。 |
| callback | Callback<SocketMessageInfo> | 是 | 回调函数。成功时返回TLSSocketConnection连接信息,失败时返回错误码、错误信息。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tlsServer: socket.TLSSocketServer = socket.constructTLSSocketServerInstance();
let netAddress: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let tlsSecureOptions: socket.TLSSecureOptions = {
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 tlsConnectOptions: socket.TLSConnectOptions = {
address: netAddress,
secureOptions: tlsSecureOptions,
ALPNProtocols: ["spdy/1", "http/1.1"]
}
tlsServer.listen(tlsConnectOptions).then(() => {
console.info("listen callback success");
}).catch((err: BusinessError) => {
console.error("failed" + err);
});
tlsServer.on('connect', (client: socket.TLSSocketConnection) => {
client.on('message', (value: socket.SocketMessageInfo) => {
let messageView = '';
let uint8Array = new Uint8Array(value.message);
for (let i: number = 0; i < value.message.byteLength; i++) {
let messages = uint8Array[i];
let message = String.fromCharCode(messages);
messageView += message;
}
console.info('on message message: ' + JSON.stringify(messageView));
console.info('remoteInfo: ' + JSON.stringify(value.remoteInfo));
});
}); off(type: 'message', callback?: Callback<SocketMessageInfo>): void
取消订阅TLSSocketConnection连接的接收消息事件。使用callback异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 订阅的事件类型。'message':接收消息事件。 |
| callback | Callback<SocketMessageInfo> | 否 | 回调函数。成功时返回TLSSocketConnection连接信息,失败时返回错误码、错误信息。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tlsServer: socket.TLSSocketServer = socket.constructTLSSocketServerInstance();
let netAddress: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let tlsSecureOptions: socket.TLSSecureOptions = {
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 tlsConnectOptions: socket.TLSConnectOptions = {
address: netAddress,
secureOptions: tlsSecureOptions,
ALPNProtocols: ["spdy/1", "http/1.1"]
}
tlsServer.listen(tlsConnectOptions).then(() => {
console.info("listen callback success");
}).catch((err: BusinessError) => {
console.error("failed" + err);
});
let callback = (value: socket.SocketMessageInfo) => {
let messageView = '';
for (let i: number = 0; i < value.message.byteLength; i++) {
let uint8Array = new Uint8Array(value.message)
let messages = uint8Array[i]
let message = String.fromCharCode(messages);
messageView += message;
}
console.info('on message message: ' + JSON.stringify(messageView));
console.info('remoteInfo: ' + JSON.stringify(value.remoteInfo));
}
tlsServer.on('connect', (client: socket.TLSSocketConnection) => {
client.on('message', callback);
// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
client.off('message', callback);
client.off('message');
}); on(type: 'close', callback: Callback<void>): void
订阅TLSSocketConnection的关闭事件。使用callback异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 订阅的事件类型。'close':关闭事件。 |
| callback | Callback<void> | 是 | 回调函数。成功时返回空,失败时返回错误码、错误信息。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tlsServer: socket.TLSSocketServer = socket.constructTLSSocketServerInstance();
let netAddress: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let tlsSecureOptions: socket.TLSSecureOptions = {
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 tlsConnectOptions: socket.TLSConnectOptions = {
address: netAddress,
secureOptions: tlsSecureOptions,
ALPNProtocols: ["spdy/1", "http/1.1"]
}
tlsServer.listen(tlsConnectOptions).then(() => {
console.info("listen callback success");
}).catch((err: BusinessError) => {
console.error("failed" + err);
});
tlsServer.on('connect', (client: socket.TLSSocketConnection) => {
client.on('close', () => {
console.info("on close success")
});
}); off(type: 'close', callback?: Callback<void>): void
取消订阅TLSSocketConnection的关闭事件。使用callback异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 订阅的事件类型。'close':关闭事件。 |
| callback | Callback<void> | 否 | 回调函数。成功时返回空,失败时返回错误码、错误信息。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tlsServer: socket.TLSSocketServer = socket.constructTLSSocketServerInstance();
let netAddress: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let tlsSecureOptions: socket.TLSSecureOptions = {
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 tlsConnectOptions: socket.TLSConnectOptions = {
address: netAddress,
secureOptions: tlsSecureOptions,
ALPNProtocols: ["spdy/1", "http/1.1"]
}
tlsServer.listen(tlsConnectOptions).then(() => {
console.info("listen callback success");
}).catch((err: BusinessError) => {
console.error("failed" + err);
});
let callback = () => {
console.info("on close success");
}
tlsServer.on('connect', (client: socket.TLSSocketConnection) => {
client.on('close', callback);
// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
client.off('close', callback);
client.off('close');
}); on(type: 'error', callback: ErrorCallback): void
订阅TLSSocketConnection连接的error事件。使用callback异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 订阅的事件类型。'error':error事件。 |
| callback | ErrorCallback | 是 | 回调函数。成功时返回空,失败时返回错误码、错误信息。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tlsServer: socket.TLSSocketServer = socket.constructTLSSocketServerInstance();
let netAddress: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let tlsSecureOptions: socket.TLSSecureOptions = {
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 tlsConnectOptions: socket.TLSConnectOptions = {
address: netAddress,
secureOptions: tlsSecureOptions,
ALPNProtocols: ["spdy/1", "http/1.1"]
}
tlsServer.listen(tlsConnectOptions).then(() => {
console.info("listen callback success");
}).catch((err: BusinessError) => {
console.error("failed" + err);
});
tlsServer.on('connect', (client: socket.TLSSocketConnection) => {
client.on('error', (err: BusinessError) => {
console.error("on error, err:" + JSON.stringify(err))
});
}); off(type: 'error', callback?: ErrorCallback): void
取消订阅TLSSocketConnection连接的error事件。使用callback异步回调。
系统能力:SystemCapability.Communication.NetStack
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 订阅的事件类型。'error':error事件。 |
| callback | ErrorCallback | 否 | 回调函数。成功时返回空,失败时返回错误码、错误信息。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 401 | Parameter error. |
示例:
import { socket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let tlsServer: socket.TLSSocketServer = socket.constructTLSSocketServerInstance();
let netAddress: socket.NetAddress = {
address: '192.168.xx.xxx',
port: 8080
}
let tlsSecureOptions: socket.TLSSecureOptions = {
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 tlsConnectOptions: socket.TLSConnectOptions = {
address: netAddress,
secureOptions: tlsSecureOptions,
ALPNProtocols: ["spdy/1", "http/1.1"]
}
tlsServer.listen(tlsConnectOptions).then(() => {
console.info("listen callback success");
}).catch((err: BusinessError) => {
console.error("failed" + err);
});
let callback = (err: BusinessError) => {
console.error("on error, err:" + JSON.stringify(err));
}
tlsServer.on('connect', (client: socket.TLSSocketConnection) => {
client.on('error', callback);
// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
client.off('error', callback);
client.off('error');
});