0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

鸿蒙开发网络管理:ohos.net.socket之Socket连接

jf_46214456 来源:jf_46214456 作者:jf_46214456 2024-06-19 09:26 次阅读

Socket连接

说明:
开发前请熟悉鸿蒙开发指导文档 :[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md]
本模块首批接口从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。

参数名类型必填说明
oadcastboolean是否可以发送广播。默认为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。HarmonyOSOpenHarmony鸿蒙文档籽料:mau123789是v直接拿

搜狗高速浏览器截图20240326151450.png

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)。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 网络管理
    +关注

    关注

    0

    文章

    118

    浏览量

    27656
  • Socket
    +关注

    关注

    0

    文章

    211

    浏览量

    34637
  • 鸿蒙
    +关注

    关注

    57

    文章

    2310

    浏览量

    42743
收藏 人收藏

    评论

    相关推荐

    HarmonyOS 网络管理开发Socket 连接

    简介 Socket 连接主要是通过 Socket 进行数据传输,支持 TCP/UDP/TLS 协议。 基本概念 ​ ● Socket:套接字,就是对
    的头像 发表于 02-18 09:20 879次阅读

    鸿蒙原生应用开发-网络管理Socket连接(一)

    一、简介 Socket连接主要是通过Socket进行数据传输,支持TCP/UDP/TLS协议。 二、基本概念 Socket:套接字,就是对网络
    发表于 04-01 14:20

    鸿蒙原生应用开发-网络管理Socket连接(二)

    。 import socket from \'@ohos.net.socket\'; // 创建一个TCPSocket连接,返回一个TCPSocket对象。 let tcp
    发表于 04-02 15:22

    鸿蒙原生应用开发-网络管理Socket连接(三)

    \'@ohos.net.socket\'; let tlsTwoWay: socket.TLSSocket = socket.constructTLSSocketInstance(); // 设置通信过程中使用参数 let
    发表于 04-03 14:26

    鸿蒙原生应用开发-网络管理模块总述

    一、网络管理模块主要提供以下功能: HTTP数据请求:通过HTTP发起一个数据请求。 WebSocket连接:使用WebSocket建立服务器与客户端的双向连接
    发表于 04-08 09:45

    如何在RT-Thread中利用标准BSD Socket API来开发网络应用

    本文描述了如何在 RT-Thread 中利用标准 BSD Socket API 来开发网络应用。并给出了在正点原子 STM32F4 探索者开发板上运行 NTP(通过网络获取时间)和 M
    发表于 03-30 06:26

    基于UDP协议的Socket网络编程模式的实现

    传输层进行网络通信编程的接口是Socket&它是通用的开发网络通信程序标准) 本文介绍了基于UDP协议Socket编程机制和原理& 提出了在C/ S模型下以Java
    发表于 09-09 15:10 42次下载

    什么是Socket连接Socket与TCP连接的关系

    主机 A 的应用程序必须通过 Socket 建立连接才能与主机B的应用程序通信,而建立 Socket 连接需要底层 TCP/IP 协议来建立 TCP
    发表于 03-31 15:10 1020次阅读

    Socket 网络编程框架介绍

    Socket 网络编程框架 Socket(套接字)是一个网络编程概念,描述了一个通信端点(Endpoint),用于建立网络连接(Connec
    的头像 发表于 11-09 14:19 1029次阅读
    <b class='flag-5'>Socket</b> <b class='flag-5'>网络</b>编程框架介绍

    什么是Socket连接Socket的工作原理 它与TCP连接有什么关系?

    和服务器之间的数据交换。 Socket连接的工作原理是基于TCP/IP协议。TCP(传输控制协议)是一种面向连接的、可靠的传输协议,用于在网络中的两个应用程序之间建立可靠的通信。而
    的头像 发表于 01-22 16:10 2161次阅读

    鸿蒙开发实战:【网络管理-Socket连接

    Socket网络通信方面的应用,展示了Socket在两端设备的连接验证、聊天通信方面的应用。
    的头像 发表于 03-19 22:04 853次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b>实战:【<b class='flag-5'>网络</b><b class='flag-5'>管理</b>-<b class='flag-5'>Socket</b><b class='flag-5'>连接</b>】

    如何理解socket编程接口

    Socket编程接口是一种网络编程的基本概念,它提供了一种在不同计算机之间进行通信的方法。 Socket编程接口的基本概念 1.1 Socket的定义
    的头像 发表于 08-16 10:48 354次阅读

    socket连接超时如何处理

    网络编程中,socket连接超时是一个常见的问题,它可能由多种原因引起,比如网络延迟、服务器负载过高或者客户端请求超时设置过短等。处理socket
    的头像 发表于 11-01 16:48 357次阅读

    socket 连接超时处理技巧

    网络编程中,Socket连接超时是一个常见的问题。处理超时的关键在于确保程序能够优雅地处理这些情况,避免程序崩溃或者无响应。以下是一些处理Socket
    的头像 发表于 11-12 14:13 170次阅读

    socket 与 RESTful API 的使用

    在现代网络应用中,数据传输和通信是核心功能之一。为了实现这一功能,开发者通常会使用两种主流的技术:Socket和RESTful API。 1. Socket的概念和特点 1.1
    的头像 发表于 11-12 14:22 198次阅读