鸿蒙开发网络管理:【@ohos.net.socket (Socket连接)】

news2024/11/22 21:56:02

Socket连接

 说明:

本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

导入模块

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

socket.constructUDPSocketInstance

constructUDPSocketInstance(): UDPSocket

创建一个UDPSocket对象。

系统能力:SystemCapability.Communication.NetStack

返回值:

类型说明
[UDPSocket]返回一个UDPSocket对象。

示例:

let udp = socket.constructUDPSocketInstance();

UDPSocket

UDPSocket连接。在调用UDPSocket的方法前,需要先通过[socket.constructUDPSocketInstance]创建UDPSocket对象。

bind

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

绑定IP地址和端口,端口可以指定或由系统随机分配。使用callback方式作为异步方法。

需要权限:ohos.permission.INTERNET

系统能力:SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
address[NetAddress]目标地址信息,参考[NetAddress]。
callbackAsyncCallback回调函数。

示例:

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

bind

bind(address: NetAddress): Promise

绑定IP地址和端口,端口可以指定或由系统随机分配。使用Promise方式作为异步方法。

需要权限:ohos.permission.INTERNET

系统能力:SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
address[NetAddress]目标地址信息,参考[NetAddress]。

返回值:

类型说明
Promise以Promise形式异步返回UDPSocket绑定的结果。

示例:

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

send

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

通过UDPSocket连接发送数据。使用callback方式作为异步方法。

发送数据前,需要先调用[UDPSocket.bind()]绑定IP地址和端口。

需要权限:ohos.permission.INTERNET

系统能力:SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
options[UDPSendOptions]UDPSocket发送参数,参考[UDPSendOptions]。
callbackAsyncCallback回调函数。

示例:

let udp = socket.constructUDPSocketInstance();
udp.send({
  data:'Hello, server!',
  address: {
	address:'192.168.xx.xxx',
	port:xxxx,
	family:1
  }
}, err=> {
	if (err) {
	  console.log('send fail');
	  return;
	}
	console.log('send success');
})

send

send(options: UDPSendOptions): Promise

通过UDPSocket连接发送数据。使用Promise方式作为异步方法。

发送数据前,需要先调用[UDPSocket.bind()]绑定IP地址和端口。

需要权限:ohos.permission.INTERNET

系统能力:SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
options[UDPSendOptions]UDPSocket发送参数,参考[UDPSendOptions]。

返回值:

类型说明
Promise以Promise形式返回UDPSocket连接发送数据的结果。

示例:

let udp = socket.constructUDPSocketInstance();
let promise = udp.send({
  data:'Hello, server!',
  address: {
	address:'192.168.xx.xxx',
	port:xxxx,
	family:1
  }
});
promise.then(() => {
  console.log('send success');
}).catch(err => {
  console.log('send fail');
});

close

close(callback: AsyncCallback): void

关闭UDPSocket连接。使用callback方式作为异步方法。

需要权限:ohos.permission.INTERNET

系统能力:SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
callbackAsyncCallback回调函数。

示例:

let udp = socket.constructUDPSocketInstance();
udp.close(err => {
  if (err) {
	console.log('close fail');
	return;
  }
  console.log('close success');
})

close

close(): Promise

关闭UDPSocket连接。使用Promise方式作为异步方法。

需要权限:ohos.permission.INTERNET

系统能力:SystemCapability.Communication.NetStack

返回值:

类型说明
Promise以Promise形式返回关闭UDPSocket连接的结果。

示例:

let udp = socket.constructUDPSocketInstance();
let promise = udp.close();
promise.then(() => {
  console.log('close success');
}).catch(err => {
  console.log('close fail');
});

getState

getState(callback: AsyncCallback): void

获取UDPSocket状态。使用callback方式作为异步方法。

 说明:  [bind]方法调用成功后,才可调用此方法。

需要权限:ohos.permission.INTERNET

系统能力:SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
callbackAsyncCallback<[SocketStateBase]>回调函数。

示例:

let udp = socket.constructUDPSocketInstance();
udp.bind({address: '192.168.xx.xxx', port: xxxx, family: 1}, err => {
  if (err) {
	console.log('bind fail');
	return;
  }
  console.log('bind success');
  udp.getState((err, data) => {
	if (err) {
	  console.log('getState fail');
	  return;
	}
	console.log('getState success:' + JSON.stringify(data));
  })
})

getState

getState(): Promise

获取UDPSocket状态。使用Promise方式作为异步方法。

 说明:  [bind]方法调用成功后,才可调用此方法。

需要权限:ohos.permission.INTERNET

系统能力:SystemCapability.Communication.NetStack

返回值:

类型说明
Promise<[SocketStateBase]>以Promise形式返回获取UDPSocket状态的结果。

示例:

let udp = socket.constructUDPSocketInstance();
udp.bind({address: '192.168.xx.xxx', port: xxxx, family: 1}, err => {
  if (err) {
	console.log('bind fail');
	return;
  }
  console.log('bind success');
  let promise = udp.getState({});
  promise.then(data => {
	console.log('getState success:' + JSON.stringify(data));
  }).catch(err => {
	console.log('getState fail');
  });
})

setExtraOptions

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

设置UDPSocket连接的其他属性。使用callback方式作为异步方法。

 说明:  [bind]方法调用成功后,才可调用此方法。

需要权限:ohos.permission.INTERNET

系统能力:SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
options[UDPExtraOptions]UDPSocket连接的其他属性,参考[UDPExtraOptions]。
callbackAsyncCallback回调函数。

示例:

let udp = socket.constructUDPSocketInstance();
udp.bind({address:'192.168.xx.xxx', port:xxxx, family:1}, err=> {
  if (err) {
	console.log('bind fail');
	return;
  }
  console.log('bind success');
  udp.setExtraOptions({
	receiveBufferSize:1000,
	sendBufferSize:1000,
	reuseAddress:false,
	socketTimeout:6000,
	broadcast:true
  }, err=> {
	if (err) {
	  console.log('setExtraOptions fail');
	  return;
	}
	console.log('setExtraOptions success');
  })
})

setExtraOptions

setExtraOptions(options: UDPExtraOptions): Promise

设置UDPSocket连接的其他属性。使用Promise方式作为异步方法。

 说明:  [bind]方法调用成功后,才可调用此方法。

需要权限:ohos.permission.INTERNET

系统能力:SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
options[UDPExtraOptions]UDPSocket连接的其他属性,参考[UDPExtraOptions]。

返回值:

类型说明
Promise以Promise形式返回设置UDPSocket连接的其他属性的结果。

示例:

let udp = socket.constructUDPSocketInstance();
let promise = udp.bind({address:'192.168.xx.xxx', port:xxxx, family:1});
promise.then(() => {
  console.log('bind success');
  let promise1 = udp.setExtraOptions({
	receiveBufferSize:1000,
	sendBufferSize:1000,
	reuseAddress:false,
	socketTimeout:6000,
	broadcast:true
  });
  promise1.then(() => {
	console.log('setExtraOptions success');
  }).catch(err => {
	console.log('setExtraOptions fail');
  });
}).catch(err => {
  console.log('bind fail');
});

on(‘message’)

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

订阅UDPSocket连接的接收消息事件。使用callback方式作为异步方法。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
typestring订阅的事件类型。‘message’:接收消息事件。
callbackCallback<{message: ArrayBuffer, remoteInfo: [SocketRemoteInfo]}>回调函数。

示例:

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

off(‘message’)

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

取消订阅UDPSocket连接的接收消息事件。使用callback方式作为异步方法。

 说明:  可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
typestring订阅的事件类型。‘message’:接收消息事件。
callbackCallback<{message: ArrayBuffer, remoteInfo: [SocketRemoteInfo]}>回调函数。

示例:

let udp = socket.constructUDPSocketInstance();
let callback = value =>{
	console.log("on message, message:" + value.message + ", remoteInfo:" + value.remoteInfo);
}
udp.on('message', callback);
// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
udp.off('message', callback);
udp.off('message');

on(‘listening’ | ‘close’)

on(type: ‘listening’ | ‘close’, callback: Callback): void

订阅UDPSocket连接的数据包消息事件或关闭事件。使用callback方式作为异步方法。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
typestring订阅的事件类型。 - ‘listening’:数据包消息事件。 - ‘close’:关闭事件。
callbackCallback回调函数。

示例:

let udp = socket.constructUDPSocketInstance();
udp.on('listening', () => {
	console.log("on listening success");
});
udp.on('close', () => {
	console.log("on close success" );
});

off(‘listening’ | ‘close’)

off(type: ‘listening’ | ‘close’, callback?: Callback): void

取消订阅UDPSocket连接的数据包消息事件或关闭事件。使用callback方式作为异步方法。

 说明:  可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
typestring订阅事件类型。 - ‘listening’:数据包消息事件。 - ‘close’:关闭事件。
callbackCallback回调函数。

示例:

let udp = socket.constructUDPSocketInstance();
let callback1 = () =>{
	console.log("on listening, success");
}
udp.on('listening', callback1);
// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
udp.off('listening', callback1);
udp.off('listening');
let callback2 = () =>{
	console.log("on close, success");
}
udp.on('close', callback2);
// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
udp.off('close', callback2);
udp.off('close');

on(‘error’)

on(type: ‘error’, callback: ErrorCallback): void

订阅UDPSocket连接的error事件。使用callback方式作为异步方法。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
typestring订阅的事件类型。‘error’:error事件。
callbackErrorCallback回调函数。

示例:

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

off(‘error’)

off(type: ‘error’, callback?: ErrorCallback): void

取消订阅UDPSocket连接的error事件。使用callback方式作为异步方法。

 说明:  可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
typestring订阅的事件类型。‘error’:error事件。
callbackErrorCallback回调函数。

示例:

let udp = socket.constructUDPSocketInstance();
let callback = err =>{
	console.log("on error, err:" + JSON.stringify(err));
}
udp.on('error', callback);
// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
udp.off('error', callback);
udp.off('error');

NetAddress

目标地址信息。

系统能力:以下各项对应的系统能力均为SystemCapability.Communication.NetStack。

参数名类型必填说明
addressstring本地绑定的ip地址。
portnumber端口号 ,范围0~65535。如果不指定系统随机分配端口。
familynumber网络协议类型,可选类型: - 1:IPv4 - 2:IPv6 默认为1。

UDPSendOptions

UDPSocket发送参数。

系统能力:以下各项对应的系统能力均为SystemCapability.Communication.NetStack。

参数名类型必填说明
datastringArrayBuffer8+
address[NetAddress]目标地址信息。

UDPExtraOptions

UDPSocket连接的其他属性。

系统能力:以下各项对应的系统能力均为SystemCapability.Communication.NetStack。

参数名类型必填说明
broadcastboolean是否可以发送广播。默认为false。
receiveBufferSizenumber接收缓冲区大小(单位:Byte)。
sendBufferSizenumber发送缓冲区大小(单位:Byte)。
reuseAddressboolean是否重用地址。默认为false。
socketTimeoutnumber套接字超时时间,单位毫秒(ms)。

SocketStateBase

Socket的状态信息。

系统能力:以下各项对应的系统能力均为SystemCapability.Communication.NetStack。

参数名类型必填说明
isBoundboolean是否绑定。
isCloseboolean是否关闭。
isConnectedboolean是否连接。

SocketRemoteInfo

Socket的连接信息。

系统能力:以下各项对应的系统能力均为SystemCapability.Communication.NetStack。

参数名类型必填说明
addressstring本地绑定的ip地址。
familystring网络协议类型,可选类型: - IPv4 - IPv6 默认为IPv4。
portnumber端口号,范围0~65535。
sizenumber服务器响应信息的字节长度。

socket.constructTCPSocketInstance

constructTCPSocketInstance(): TCPSocket

创建一个TCPSocket对象。

系统能力:SystemCapability.Communication.NetStack

返回值:

类型说明
[TCPSocket返回一个TCPSocket对象。

示例:

let tcp = socket.constructTCPSocketInstance();

TCPSocket

TCPSocket连接。在调用TCPSocket的方法前,需要先通过[socket.constructTCPSocketInstance]创建TCPSocket对象。

bind

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

绑定IP地址和端口,端口可以指定或由系统随机分配。使用callback方法作为异步方法。

需要权限:ohos.permission.INTERNET

系统能力:SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
address[NetAddress]目标地址信息,参考[NetAddress]。
callbackAsyncCallback回调函数。

示例:

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

bind

bind(address: NetAddress): Promise

绑定IP地址和端口,端口可以指定或由系统随机分配。使用Promise方法作为异步方法。

需要权限:ohos.permission.INTERNET

系统能力:SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
address[NetAddress]目标地址信息,参考[NetAddress]。

返回值:

类型说明
Promise以Promise形式返回TCPSocket绑定本机的IP地址和端口的结果。

示例:

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

connect

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

连接到指定的IP地址和端口。使用callback方法作为异步方法。

需要权限:ohos.permission.INTERNET

系统能力:SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
options[TCPConnectOptions]TCPSocket连接的参数,参考[TCPConnectOptions]。
callbackAsyncCallback回调函数。

示例:

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

connect

connect(options: TCPConnectOptions): Promise

连接到指定的IP地址和端口。使用promise方法作为异步方法。

需要权限:ohos.permission.INTERNET

系统能力:SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
options[TCPConnectOptionsTCPSocket连接的参数,参考[TCPConnectOptions]。

返回值:

类型说明
Promise以Promise形式返回TCPSocket连接到指定的IP地址和端口的结果。

示例:

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

send

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

通过TCPSocket连接发送数据。使用callback方式作为异步方法。

 说明:  [connect]方法调用成功后,才可调用此方法。

需要权限:ohos.permission.INTERNET

系统能力:SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
options[TCPSendOptions]TCPSocket发送请求的参数,参考[TCPSendOptions]。
callbackAsyncCallback回调函数。

示例:

let tcp = socket.constructTCPSocketInstance();
let promise = tcp.connect({ address: {address: '192.168.xx.xxx', port: xxxx, family: 1} , timeout: 6000});
promise.then(() => {
  console.log('connect success');
  tcp.send({
	data:'Hello, server!'
  },err => {
	if (err) {
	  console.log('send fail');
	  return;
	}
	console.log('send success');
  })
}).catch(err => {
  console.log('connect fail');
});

send

send(options: TCPSendOptions): Promise

通过TCPSocket连接发送数据。使用Promise方式作为异步方法。

 说明:  [connect]方法调用成功后,才可调用此方法。

需要权限:ohos.permission.INTERNET

系统能力:SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
options[TCPSendOptions]TCPSocket发送请求的参数,参考[TCPSendOptions]。

返回值:

类型说明
Promise以Promise形式返回通过TCPSocket连接发送数据的结果。

示例:

let tcp = socket.constructTCPSocketInstance();
let promise1 = tcp.connect({ address: {address: '192.168.xx.xxx', port: xxxx, family: 1} , timeout: 6000});
promise1.then(() => {
  console.log('connect success');
  let promise2 = tcp.send({
	data:'Hello, server!'
  });
  promise2.then(() => {
	console.log('send success');
  }).catch(err => {
	console.log('send fail');
  });
}).catch(err => {
  console.log('connect fail');
});

close

close(callback: AsyncCallback): void

关闭TCPSocket连接。使用callback方式作为异步方法。

需要权限:ohos.permission.INTERNET

系统能力:SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
callbackAsyncCallback回调函数。

示例:

let tcp = socket.constructTCPSocketInstance();
tcp.close(err => {
  if (err) {
	console.log('close fail');
	return;
  }
  console.log('close success');
})

close

close(): Promise

关闭TCPSocket连接。使用Promise方式作为异步方法。

需要权限:ohos.permission.INTERNET

系统能力:SystemCapability.Communication.NetStack

返回值:

类型说明
Promise以Promise形式返回关闭TCPSocket连接的结果。

示例:

let tcp = socket.constructTCPSocketInstance();
let promise = tcp.close();
promise.then(() => {
  console.log('close success');
}).catch(err => {
  console.log('close fail');
});

getRemoteAddress

getRemoteAddress(callback: AsyncCallback): void

获取对端Socket地址。使用callback方式作为异步方法。

 说明:  [connect]方法调用成功后,才可调用此方法。

需要权限:ohos.permission.INTERNET

系统能力:SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
callbackAsyncCallback<[NetAddress](>回调函数。

示例:

let tcp = socket.constructTCPSocketInstance();
let promise = tcp.connect({ address: {address: '192.168.xx.xxx', port: xxxx, family: 1} , timeout: 6000});
promise.then(() => {
  console.log('connect success');
  tcp.getRemoteAddress((err, data) => {
	if (err) {
	  console.log('getRemoteAddressfail');
	  return;
	}
	console.log('getRemoteAddresssuccess:' + JSON.stringify(data));
  })
}).catch(err => {
  console.log('connect fail');
});

getRemoteAddress

getRemoteAddress(): Promise

获取对端Socket地址。使用Promise方式作为异步方法。

 说明:  [connect]方法调用成功后,才可调用此方法。

需要权限:ohos.permission.INTERNET

系统能力:SystemCapability.Communication.NetStack

返回值:

类型说明
Promise<[NetAddress]>以Promise形式返回获取对端socket地址的结果。

示例:

let tcp = socket.constructTCPSocketInstance();
let promise1 = tcp.connect({ address: {address: '192.168.xx.xxx', port: xxxx, family: 1} , timeout: 6000});
promise1.then(() => {
  console.log('connect success');
  let promise2 = tcp.getRemoteAddress();
  promise2.then(() => {
	console.log('getRemoteAddress success:' + JSON.stringify(data));
  }).catch(err => {
	console.log('getRemoteAddressfail');
  });
}).catch(err => {
  console.log('connect fail');
});

getState

getState(callback: AsyncCallback): void

获取TCPSocket状态。使用callback方式作为异步方法。

 说明:  [bind]或[connect]方法调用成功后,才可调用此方法。

需要权限:ohos.permission.INTERNET

系统能力:SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
callbackAsyncCallback<[SocketStateBase]>回调函数。

示例:

let tcp = socket.constructTCPSocketInstance();
let promise = tcp.connect({ address: {address: '192.168.xx.xxx', port: xxxx, family: 1} , timeout: 6000});
promise.then(() => {
  console.log('connect success');
  tcp.getState((err, data) => {
	if (err) {
	  console.log('getState fail');
	  return;
	}
	console.log('getState success:' + JSON.stringify(data));
  });
}).catch(err => {
  console.log('connect fail');
});

getState

getState(): Promise

获取TCPSocket状态。使用Promise方式作为异步方法。

 说明:  [bind]或[connect]方法调用成功后,才可调用此方法。

需要权限:ohos.permission.INTERNET

系统能力:SystemCapability.Communication.NetStack

返回值:

类型说明
Promise<[SocketStateBase]>以Promise形式返回获取TCPSocket状态的结果。

示例:

let tcp = socket.constructTCPSocketInstance();
let promise = tcp.connect({ address: {address: '192.168.xx.xxx', port: xxxx, family: 1} , timeout: 6000});
promise.then(() => {
  console.log('connect success');
  let promise1 = tcp.getState();
  promise1.then(() => {
	console.log('getState success:' + JSON.stringify(data));
  }).catch(err => {
	console.log('getState fail');
  });
}).catch(err => {
  console.log('connect fail');
});

setExtraOptions

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

设置TCPSocket连接的其他属性。使用callback方式作为异步方法。

 说明:  [bind]或[connect]方法调用成功后,才可调用此方法。

需要权限:ohos.permission.INTERNET

系统能力:SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
options[TCPExtraOptions]TCPSocket连接的其他属性,参考[TCPExtraOptions]。
callbackAsyncCallback回调函数。

示例:

let tcp = socket.constructTCPSocketInstance();
let promise = tcp.connect({ address: {address: '192.168.xx.xxx', port: xxxx, family: 1} , timeout: 6000});
promise.then(() => {
  console.log('connect success');
  tcp.setExtraOptions({
	keepAlive: true,
	OOBInline: true,
	TCPNoDelay: true,
	socketLinger: { on:true, linger:10 },
	receiveBufferSize: 1000,
	sendBufferSize: 1000,
	reuseAddress: true,
	socketTimeout: 3000,
  },err => {
	if (err) {
	  console.log('setExtraOptions fail');
	  return;
	}
	console.log('setExtraOptions success');
  });
}).catch(err => {
  console.log('connect fail');
});

setExtraOptions

setExtraOptions(options: TCPExtraOptions): Promise

设置TCPSocket连接的其他属性,使用Promise方式作为异步方法。

 说明:  [bind]或[connect]方法调用成功后,才可调用此方法。

需要权限:ohos.permission.INTERNET

系统能力:SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
options[TCPExtraOptions]TCPSocket连接的其他属性,参考[TCPExtraOptions]。

返回值:

类型说明
Promise以Promise形式返回设置TCPSocket连接的其他属性的结果。

示例:

let tcp = socket.constructTCPSocketInstance();
let promise = tcp.connect({ address: {address: '192.168.xx.xxx', port: xxxx, family: 1} , timeout: 6000});
promise.then(() => {
  console.log('connect success');
  let promise1 = tcp.setExtraOptions({
	keepAlive: true,
	OOBInline: true,
	TCPNoDelay: true,
	socketLinger: { on:true, linger:10 },
	receiveBufferSize: 1000,
	sendBufferSize: 1000,
	reuseAddress: true,
	socketTimeout: 3000,
  });
  promise1.then(() => {
	console.log('setExtraOptions success');
  }).catch(err => {
	console.log('setExtraOptions fail');
  });
}).catch(err => {
  console.log('connect fail');
});

on(‘message’)

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

订阅TCPSocket连接的接收消息事件。使用callback方式作为异步方法。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
typestring订阅的事件类型。‘message’:接收消息事件。
callbackCallback<{message: ArrayBuffer, remoteInfo: [SocketRemoteInfo]}>回调函数。

示例:

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

off(‘message’)

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

取消订阅TCPSocket连接的接收消息事件。使用callback方式作为异步方法。

 说明:  可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
typestring订阅的事件类型。‘message’:接收消息事件。
callbackCallback<{message: ArrayBuffer, remoteInfo: [SocketRemoteInfo]}>回调函数。

示例:

let tcp = socket.constructTCPSocketInstance();
let callback = value =>{
	console.log("on message, message:" + value.message + ", remoteInfo:" + value.remoteInfo);
}
tcp.on('message', callback);
// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
tcp.off('message', callback);
tcp.off('message');

on(‘connect’ | ‘close’)

on(type: ‘connect’ | ‘close’, callback: Callback): void

订阅TCPSocket的连接事件或关闭事件。使用callback方式作为异步方法。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
typestring订阅的事件类型。 - ‘connect’:连接事件。 - ‘close’:关闭事件。
callbackCallback回调函数。

示例:

let tcp = socket.constructTCPSocketInstance();
tcp.on('connect', () => {
	console.log("on connect success")
});
tcp.on('close', data => {
	console.log("on close success")
});

off(‘connect’ | ‘close’)

off(type: ‘connect’ | ‘close’, callback?: Callback): void

取消订阅TCPSocket的连接事件或关闭事件。使用callback方式作为异步方法。

 说明:  可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
typestring订阅的事件类型。 - ‘connect’:连接事件。 - ‘close’:关闭事件。
callbackCallback回调函数。

示例:

let tcp = socket.constructTCPSocketInstance();
let callback1 = () =>{
	console.log("on connect success");
}
tcp.on('connect', callback1);
// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
tcp.off('connect', callback1);
tcp.off('connect');
let callback2 = () =>{
	console.log("on close success");
}
tcp.on('close', callback2);
// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
tcp.off('close', callback2);
tcp.off('close');

on(‘error’)

on(type: ‘error’, callback: ErrorCallback): void

订阅TCPSocket连接的error事件。使用callback方式作为异步方法。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
typestring订阅的事件类型。‘error’:error事件。
callbackErrorCallback回调函数。

示例:

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

off(‘error’)

off(type: ‘error’, callback?: ErrorCallback): void

取消订阅TCPSocket连接的error事件。使用callback方式作为异步方法。

 说明:  可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
typestring订阅的事件类型。‘error’:error事件。
callbackErrorCallback回调函数。

示例:

let tcp = socket.constructTCPSocketInstance();
let callback = err =>{
	console.log("on error, err:" + JSON.stringify(err));
}
tcp.on('error', callback);
// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
tcp.off('error', callback);
tcp.off('error');

TCPConnectOptions

TCPSocket连接的参数。

系统能力:以下各项对应的系统能力均为SystemCapability.Communication.NetStack。

参数名类型必填说明
address[NetAddress]绑定的地址以及端口。
timeoutnumber超时时间,单位毫秒(ms)。

TCPSendOptions

TCPSocket发送请求的参数。

系统能力:以下各项对应的系统能力均为SystemCapability.Communication.NetStack。

参数名类型必填说明
datastringArrayBuffer8+
encodingstring字符编码(UTF-8,UTF-16BE,UTF-16LE,UTF-16,US-AECII,ISO-8859-1),默认为UTF-8。

TCPExtraOptions

TCPSocket连接的其他属性。

系统能力:以下各项对应的系统能力均为SystemCapability.Communication.NetStack。

参数名类型必填说明
keepAliveboolean是否保持连接。默认为false。
OOBInlineboolean是否为OOB内联。默认为false。
TCPNoDelaybooleanTCPSocket连接是否无时延。默认为false。
socketLingerObjectsocket是否继续逗留。 - on:是否逗留(true:逗留;false:不逗留)。 - linger:逗留时长,单位毫秒(ms),取值范围为0~65535。 当入参on设置为true时,才需要设置。
receiveBufferSizenumber接收缓冲区大小(单位:Byte)。
sendBufferSizenumber发送缓冲区大小(单位:Byte)。
reuseAddressboolean是否重用地址。默认为false。
socketTimeoutnumber套接字超时时间,单位毫秒(ms)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1836250.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

卡本医疗VENUS登陆香港国际医疗展,探索全球医疗发展新机遇

由香港贸易发展局主办的第15届香港国际医疗及保健展、以及联合香港特别行政区政府举办的第四届亚洲医疗健康高峰论坛在中国香港圆满落幕。 香港国际医疗及保健展是亚太地区最具影响力的B2B医疗贸易展览会之一&#xff0c;辐射海内外市场&#xff0c;本次邀请了超过8500家买家以…

2024.6.18 作业 xyt

今日作业&#xff1a; 1. 完善对话框&#xff0c;点击登录对话框&#xff0c;如果账号和密码匹配&#xff0c;则弹出信息对话框&#xff0c;给出提示”登录成功“&#xff0c;提供一个Ok按钮&#xff0c;用户点击Ok后&#xff0c;关闭登录界面&#xff0c;跳转到其他界面 如果…

5G工业路由器在智慧交通车路协同应用的深度解析

随着科技的飞速发展&#xff0c;智慧交通已成为现代城市发展的重要方向。在智慧交通的众多技术中&#xff0c;5G工业路由器凭借其高速、稳定、安全等特性&#xff0c;成为车路协同应用中不可或缺的一环。本文将在本文中深度解析5G工业路由器在智慧交通车路协同应用中的重要作用…

接口联调测试

在我们工作过程中&#xff0c;有时需要一些接口进行联调。接口联调测试&#xff0c;就是按照业务要求&#xff0c;把接口进行组合测试。接口组合起来才能实现完整的业务&#xff0c;体现更大的价值。 接口联调测试业务分析&#xff1a; 原因&#xff1a; 项目中的接口是多个…

一文读懂OpenGVLab带来的最新视觉预训练框架

大模型技术论文不断&#xff0c;每个月总会新增上千篇。本专栏精选论文重点解读&#xff0c;主题还是围绕着行业实践和工程量产。若在某个环节出现卡点&#xff0c;可以回到大模型必备腔调或者LLM背后的基础模型重新阅读。而最新科技&#xff08;Mamba,xLSTM,KAN&#xff09;则…

gitlab 获取指定分支下指定路径文件夹的解决方案

第一步&#xff1a; 获取 accessToken 及你的 项目 id &#xff1a; 获取 accessToken ,点击用户头像进入setting 按图示操作&#xff0c;第 3 步 填写你发起请求的域名。 获取项目 id , 简单粗暴方案 进入 你项目仓库页面后 直接 源码搜索 project_id&#xff0c; value 就…

论文精读——KAN

目录 1.研究背景 2.关键技术 2.1 原始公式 2.2 KAN结构 2.3 缩放定律 3.技术扩展 4.模型效果 5.相关讨论 6.总结 文章标题&#xff1a;《KAN: Kolmogorov–Arnold Networks》 文章地址&#xff1a; KAN: Kolmogorov-Arnold Networks (arxiv.org)https://arxiv.org/a…

一文看懂!iThenticate查重报告全解读

在科研界&#xff0c;原创性和知识产权保护的重要性不言而喻。iThenticate作为全球领先的文献比对和不端检测工具&#xff0c;为广大科研工作者提供了一道坚实的防线保障。据统计&#xff0c;全球有超过16000家学术机构、出版社、高校与企业使用iThenticate查重系统&#xff0c…

C++初学者指南第一步---6.枚举和枚举类

C初学者指南第一步—6.枚举和枚举类 文章目录 C初学者指南第一步---6.枚举和枚举类1.作用域的枚举(enum class类型&#xff09;&#xff08;C11&#xff09;2.无作用域的枚举(enum类型)3.枚举类的基础类型4.自定义枚举类映射5.和基础类型的互相转换 1.作用域的枚举(enum class类…

【论文阅读】-- 时间空间化:用于深度分类器训练的可扩展且可靠的时间旅行可视化

Temporality Spatialization: A Scalable and Faithful Time-Travelling Visualization for Deep Classifier Training 摘要1 引言2 动机3 问题定义4 方法论4.1 时空复合体4.2 复数约简 5 实验6 相关工作7 结论参考文献 摘要 时间旅行可视化回答了深度分类器的预测是如何在训练…

头歌资源库(11)分解2019

一、 问题描述 二、算法思想 首先&#xff0c;确定第一个整数的范围&#xff0c;由于不能包含数字2和4&#xff0c;所以第一个整数的取值范围为[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 5, 6, 7, 8, 9]。 然后&#xff0c;在确定第一个整…

DAY 45 企业级虚拟化技术KVM

企业级虚拟化技术KVM 1.kvm是什么 kernel virtualization machine 内核虚拟机 qemu的二次开发 软件全拼 qemu-kvm kvm virtulbox ovm vmware vsphere套件&#xff08;vmawre-esxi&#xff09; microsoft hyper-V 2.什么是虚拟化 资源利用 资源隔离 虚拟化管理&…

立创开源学习篇(一)

1.机壳地 外面包围的一圈是机壳地&#xff0c;和金属外壳相连与电路板的GND不相连&#xff1a;&#xff08;大疆很多产品有此设计&#xff09; 屏蔽和接地&#xff1a;通过在电路板周围打孔&#xff0c;并连接到机壳地&#xff0c;可以形成有效的电磁屏蔽层&#xff08;形成金…

LabVIEW开发为什么沟通需求非常重要

在LabVIEW开发项目中&#xff0c;需求沟通是项目成功的基石。以下是需求沟通的重要性及其原因&#xff1a; 明确项目目标&#xff1a; 定义清晰的目标&#xff1a;通过与用户的沟通&#xff0c;可以明确项目的目标和范围&#xff0c;确保开发团队理解用户的实际需求&#xff0c…

Windows系统部署本地SQL_Server指引

Windows系统部署本地SQL_Server指引 此指引文档环境为Windows10系统&#xff0c;部署SQL_Server 2019为例&#xff0c;同系列系统软件安装步骤类似。 一、部署前准备&#xff1b; 下载好相关镜像文件&#xff1b;设备系统启动后&#xff0c;将不必要的软件停用&#xff0c;避…

4M-21:霸气侧漏高效的20+多模态AI模型

大模型技术论文不断&#xff0c;每个月总会新增上千篇。本专栏精选论文重点解读&#xff0c;主题还是围绕着行业实践和工程量产。若在某个环节出现卡点&#xff0c;可以回到大模型必备腔调或者LLM背后的基础模型重新阅读。而最新科技&#xff08;Mamba,xLSTM,KAN&#xff09;则…

Python的print,input与注释的使用

1.print的使用 2.input的使用 3.如何注释 1.print的使用 1.1建立俩个变量a&#xff0c;b&#xff0c;直接把变量放在print的括号里面就会打印其的值。 1.2print可以同时打印多个&#xff0c;打印ab的值与字符串‘11’。 1.3先用chr&#xff08;&#xff09;函数去获取对应97…

CIC-DDoS2019-Detection

CIC-DDoS2019 对CIC-DDoS2019数据集进行检测,本文提供了如下内容&#xff1a; 数据清洗与合并机器学习模型深度学习模型PCA,t-SNE分析数据&#xff0c;结果可视化 代码地址&#xff1a;[daetz-coder](https://github.com/daetz-coder/CIC-DDoS2019-Detection) 1、数据集加载…

基于Flask+Mysql+EasyUI的简单用户管理系统

1、系统实现功能 添加用户查看用户修改用户删除用户 完整代码下载地址在最后&#xff0c;若显示链接不存在&#xff0c;可能是资源还没有审核&#xff0c;可私聊我发完整代码。 2、功能实现 2.1 添加用户 构建添加用户的Flask接口add_user() app.route("/add/user&quo…

计算机网络(谢希仁第六版)| 课后习题与答案 | 物理层 | 题目知识点详细分析

计算机网络&#xff08;谢希仁第六版&#xff09;课后习题与答案 物理层 博客只对老师给的重点进行整理&#xff0c;完整的课后习题答案见Gitee下载&#xff1a;《计算机网络教程&#xff08;第6版&#xff09;&#xff08;微课版&#xff09;》习题答案 2-5 请画出数据流1 0 1…