harmony 鸿蒙@ohos.bluetooth.socket (Bluetooth Socket Module)
@ohos.bluetooth.socket (Bluetooth Socket Module)
The socket module provides APIs for operating and managing Bluetooth sockets.
NOTE
The initial APIs of this module are supported since API version 10. Newly added APIs will be marked with a superscript to indicate their earliest API version.
Modules to Import
import { socket } from '@kit.ConnectivityKit';
socket.sppListen
sppListen(name: string, options: SppOptions, callback: AsyncCallback<number>): void
Creates a Serial Port Profile (SPP) listening socket for the server. This API uses an asynchronous callback to return the result.
Required permissions: ohos.permission.ACCESS_BLUETOOTH
System capability: SystemCapability.Communication.Bluetooth.Core
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
name | string | Yes | Name of the service. |
options | SppOptions | Yes | SPP listening configuration. |
callback | AsyncCallback<number> | Yes | Callback used to return the server socket ID. |
Error codes
For details about the error codes, see Bluetooth Error Codes.
ID | Error Message |
---|---|
201 | Permission denied. |
401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3. Parameter verification failed. |
801 | Capability not supported. |
2900001 | Service stopped. |
2900003 | Bluetooth disabled. |
2900004 | Profile not supported. |
2900099 | Operation failed. |
Example
import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit';
let serverNumber = -1;
let serverSocket = (code: BusinessError, number: number) => {
if (code) {
console.error('sppListen error, code is ' + code);
return;
} else {
serverNumber = number;
console.info('sppListen success, serverNumber = ' + serverNumber);
}
}
let sppOption:socket.SppOptions = {uuid: '00001810-0000-1000-8000-00805F9B34FB', secure: false, type: 0};
try {
socket.sppListen('server1', sppOption, serverSocket);
} catch (err) {
console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message);
}
socket.sppAccept
sppAccept(serverSocket: number, callback: AsyncCallback<number>): void
Accepts a connection request from the client over a socket of the server. This API uses an asynchronous callback to return the result.
System capability: SystemCapability.Communication.Bluetooth.Core
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
serverSocket | number | Yes | Server socket ID. |
callback | AsyncCallback<number> | Yes | Callback used to return the client socket ID. |
Error codes
For details about the error codes, see Bluetooth Error Codes.
ID | Error Message |
---|---|
401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3. Parameter verification failed. |
801 | Capability not supported. |
2900001 | Service stopped. |
2900003 | Bluetooth disabled. |
2900004 | Profile not supported. |
2900099 | Operation failed. |
Example
import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit';
let clientNumber = -1;
let serverNumber = -1;
let acceptClientSocket = (code: BusinessError, number: number) => {
if (code) {
console.error('sppListen error, code is ' + code);
return;
} else {
clientNumber = number; // The obtained clientNumber is used as the socket ID for subsequent read/write operations on the client.
console.info('sppListen success, serverNumber = ' + clientNumber);
}
}
try {
socket.sppAccept(serverNumber, acceptClientSocket); // serverNumber is the server number returned by the sppListen callback.
} catch (err) {
console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message);
}
socket.sppConnect
sppConnect(deviceId: string, options: SppOptions, callback: AsyncCallback<number>): void
Initiates an SPP connection to a remote device from the client. This API uses an asynchronous callback to return the result.
Required permissions: ohos.permission.ACCESS_BLUETOOTH
System capability: SystemCapability.Communication.Bluetooth.Core
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
deviceId | string | Yes | Address of the remote device, for example, XX:XX:XX:XX:XX:XX. |
options | SppOptions | Yes | SPP listening configuration for client. |
callback | AsyncCallback<number> | Yes | Callback used to return the client socket ID. |
Error codes
For details about the error codes, see Bluetooth Error Codes.
ID | Error Message |
---|---|
201 | Permission denied. |
401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3. Parameter verification failed. |
801 | Capability not supported. |
2900001 | Service stopped. |
2900003 | Bluetooth disabled. |
2900004 | Profile not supported. |
2900099 | Operation failed. |
Example
import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit';
let clientSocket = (code: BusinessError, number: number) => {
if (code) {
console.error('sppListen error, code is ' + code);
return;
} else {
// The obtained number is used as the socket ID for subsequent read/write operations on the client.
console.info('bluetooth serverSocket Number: ' + number);
}
}
let sppOption:socket.SppOptions = {uuid: '00001810-0000-1000-8000-00805F9B34FB', secure: false, type: 0};
try {
socket.sppConnect('XX:XX:XX:XX:XX:XX', sppOption, clientSocket);
} catch (err) {
console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message);
}
socket.getDeviceId17+
getDeviceId(clientSocket: number): string
Obtains the address of the peer device over a client socket. This API is applicable both to the server and client. However, the API call fails if an invalid clientSocket is passed.
System capability: SystemCapability.Communication.Bluetooth.Core
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
clientSocket | number | Yes | Client socket ID, which is obtained by sppAccept or sppConnect. |
Return value
Type | Description |
---|---|
string | Address of the remote device, for example, XX:XX:XX:XX:XX:XX. |
Error codes
For details about the error codes, see Universal Error Codes.
ID | Error Message |
---|---|
401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3. Parameter verification failed. |
Example
import { socket } from '@kit.ConnectivityKit';
import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit';
// The server obtains the address of the client.
let clientSocket = -1; // clientSocket is obtained from the sppAccept callback. Before calling getDeviceId, update the clientSocket.
try {
let deviceAddr: string = socket.getDeviceId(clientSocket);
} catch (err) {
console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message);
}
// The client obtains the address of the server.
// clientSocket is obtained from the sppAccept callback. Before calling getDeviceId, update the clientSocket.
try {
let deviceAddr: string = socket.getDeviceId(clientSocket);
} catch (err) {
console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message);
}
socket.sppCloseServerSocket
sppCloseServerSocket(socket: number): void
Closes a listening socket of the server.
System capability: SystemCapability.Communication.Bluetooth.Core
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
socket | number | Yes | Server socket ID, which is obtained by sppListen(). |
Error codes
For details about the error codes, see Bluetooth Error Codes.
ID | Error Message |
---|---|
401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
801 | Capability not supported. |
2900001 | Service stopped. |
2900099 | Operation failed. |
Example
import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit';
let serverNumber = -1; // Set serverNumber to the value of serverNumber returned by the sppListen callback.
try {
socket.sppCloseServerSocket(serverNumber);
} catch (err) {
console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message);
}
socket.sppCloseClientSocket
sppCloseClientSocket(socket: number): void
Closes a client socket.
System capability: SystemCapability.Communication.Bluetooth.Core
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
socket | number | Yes | Client socket ID, which is obtained by sppAccept() or sppConnect(). |
Error codes
For details about the error codes, see Bluetooth Error Codes.
ID | Error Message |
---|---|
401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
801 | Capability not supported. |
2900001 | Service stopped. |
2900099 | Operation failed. |
Example
import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit';
let clientNumber = -1; // clientNumber is obtained by sppAccept or sppConnect.
try {
socket.sppCloseClientSocket(clientNumber);
} catch (err) {
console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message);
}
socket.sppWrite
sppWrite(clientSocket: number, data: ArrayBuffer): void
Writes data to the remote device through a socket.
System capability: SystemCapability.Communication.Bluetooth.Core
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
clientSocket | number | Yes | Client socket ID, which is obtained by sppAccept() or sppConnect(). |
data | ArrayBuffer | Yes | Data to write. |
Error codes
For details about the error codes, see Bluetooth Error Codes.
ID | Error Message |
---|---|
401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
801 | Capability not supported. |
2901054 | IO error. |
2900099 | Operation failed. |
Example
import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit';
let clientNumber = -1; // clientNumber is obtained by sppAccept or sppConnect.
let arrayBuffer = new ArrayBuffer(8);
let data = new Uint8Array(arrayBuffer);
data[0] = 123;
try {
socket.sppWrite(clientNumber, arrayBuffer);
} catch (err) {
console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message);
}
socket.on(‘sppRead’)
on(type: ‘sppRead’, clientSocket: number, callback: Callback<ArrayBuffer>): void
Subscribes to the SPP read request events. This API uses an asynchronous callback to return the result.
System capability: SystemCapability.Communication.Bluetooth.Core
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
type | string | Yes | Event type. The value is sppRead, which indicates an SPP read request event. |
clientSocket | number | Yes | Client socket ID, which is obtained by sppAccept() or sppConnect(). |
callback | Callback<ArrayBuffer> | Yes | Callback used to return the data read. |
Error codes
For details about the error codes, see Bluetooth Error Codes.
ID | Error Message |
---|---|
401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
801 | Capability not supported. |
2901054 | IO error. |
2900099 | Operation failed. |
Example
import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit';
let clientNumber = -1; // clientNumber is obtained by sppAccept or sppConnect.
let dataRead = (dataBuffer: ArrayBuffer) => {
let data = new Uint8Array(dataBuffer);
console.info('bluetooth data is: ' + data[0]);
}
try {
socket.on('sppRead', clientNumber, dataRead);
} catch (err) {
console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message);
}
socket.off(‘sppRead’)
off(type: ‘sppRead’, clientSocket: number, callback?: Callback<ArrayBuffer>): void
Unsubscribes from the SPP read request events.
System capability: SystemCapability.Communication.Bluetooth.Core
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
type | string | Yes | Event type. The value is sppRead, which indicates an SPP read request event. |
clientSocket | number | Yes | Client socket ID, which is obtained by sppAccept or sppConnect. |
callback | Callback<ArrayBuffer> | No | Callback to unregister. If this parameter is not set, this API unregisters all callbacks for the specified type. |
Error codes
For details about the error codes, see Bluetooth Error Codes.
ID | Error Message |
---|---|
401 | Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
801 | Capability not supported. |
Example
import { AsyncCallback, BusinessError } from '@kit.BasicServicesKit';
let clientNumber = -1; // clientNumber is obtained by sppAccept or sppConnect.
try {
socket.off('sppRead', clientNumber);
} catch (err) {
console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message);
}
socket.sppWriteAsync18+
sppWriteAsync(clientSocket: number, data: ArrayBuffer): Promise<void>
Writes data to the remote device through the socket. This API uses a promise to return the result. It supports returning of SPP operation errors, if any, when the connection is disconnected.
System capability: SystemCapability.Communication.Bluetooth.Core
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
clientSocket | number | Yes | Client socket ID, which is obtained by sppAccept or sppConnect. |
data | ArrayBuffer | Yes | Data to write. |
Return value
Type | Description |
---|---|
Promise<void> | Promise used to return the result. If the operation is successful, err is undefined. Otherwise, err is an error object. |
Error codes
For details about the error codes, see Universal Error Codes and Bluetooth Error Codes.
ID | Error Message |
---|---|
801 | Capability not supported. |
2901054 | IO error. |
2900099 | Operation failed. |
Example
import { socket } from '@kit.ConnectivityKit'
import { AsyncCallback,BusinessError } from '@kit.BasicServicesKit';
let clientNumber = -1; // clientNumber is obtained by sppAccept or sppConnect.
let arrayBuffer = new ArrayBuffer(8);
let data = new Uint8Array(arrayBuffer);
try {
await socket.sppWriteAsync(clientNumber, arrayBuffer);
} catch (err) {
console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message);
}
socket.sppReadAsync18+
sppReadAsync(clientSocket: number): Promise<ArrayBuffer>
Reads data sent from the remote device through the socket. This API uses a promise to return the result. It supports returning of SPP operation errors, if any, when the connection is disconnected.
NOTE
This API cannot be used together with socket.on(‘sppRead’). A socket can use either this API or socket.on(‘sppRead’).
This API is used in a different way from socket.on(‘sppRead’). It needs to be called cyclically to read data.
System capability: SystemCapability.Communication.Bluetooth.Core
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
clientSocket | number | Yes | Client socket ID, which is obtained by sppAccept or sppConnect. |
Return value
Type | Description |
---|---|
Promise<ArrayBuffer> | Promise used to return the result. If the operation is successful, the result is returned in ArrayBuffer. If the operation fails, the corresponding error code is returned. |
Error codes
For details about the error codes, see Universal Error Codes and Bluetooth Error Codes.
ID | Error Message |
---|---|
801 | Capability not supported. |
2901054 | IO error. |
2900099 | Operation failed. |
Example
import { socket } from '@kit.ConnectivityKit'
import { AsyncCallback,BusinessError } from '@kit.BasicServicesKit';
let clientNumber = -1; // clientNumber is obtained by sppAccept or sppConnect.
let buffer = new ArrayBuffer(1024);
let data = new Uint8Array(arrayBuffer);
let flag = 1;
while (flag) {
try {
buffer = await socket.sppReadAsync(this.clientNumber);
if (buffer != null) {
console.info('sppRead success, data = ' + JSON.stringify(buffer));
printArrayBuffer(buffer);
} else {
console.error('sppRead error, data is null');
}
} catch (err) {
flag = 0;
console.error('startSppRead errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message);
}
}
SppOptions
Defines the SPP configuration parameters.
System capability: SystemCapability.Communication.Bluetooth.Core
Name | Type | Readable | Writable | Description |
---|---|---|---|---|
uuid | string | Yes | Yes | UUID of the SPP. |
secure | boolean | Yes | Yes | Whether it is a secure channel. The value true indicates a secure channel, and the value false indicates a non-secure channel. |
type | SppType | Yes | Yes | Type of the SPP link. |
SppType
Enumerates the SPP link types.
System capability: SystemCapability.Communication.Bluetooth.Core
Name | Value | Description |
---|---|---|
SPP_RFCOMM | 0 | Radio frequency communication (RFCOMM) link. |
你可能感兴趣的鸿蒙文章
harmony 鸿蒙Connectivity Kit (Short-Range Communication Service)
harmony 鸿蒙Bluetooth Error Codes
harmony 鸿蒙SecureElement Error Codes
harmony 鸿蒙@ohos.bluetooth.a2dp (Bluetooth A2DP Module) (System API)
harmony 鸿蒙@ohos.bluetooth.a2dp (Bluetooth A2DP Module)
harmony 鸿蒙@ohos.bluetooth.access (Bluetooth Access Module) (System API)
- 所属分类: 后端技术
- 本文标签:
热门推荐
-
2、 - 优质文章
-
3、 gate.io
-
8、 golang
-
9、 openharmony
-
10、 Vue中input框自动聚焦