socket.TLSSocket类,在bind IPv6类型的地址时,没有成功或者失败回调。
关键代码:
this.socket = socket.constructTLSSocketInstance();
connection.getDefaultNet().then((netHandle) => {
connection.getConnectionProperties(netHandle, (error, info) => {
if (!error) {
let ip = info.linkAddresses[0].address.address;
if (TsUtils.isIPv6(this.host)) {
const ipv6Addresses = info.linkAddresses.filter((lAddr) => lAddr.address.family === 2);
if (ipv6Addresses.length <= 0) {
this.dealFailResult({
code: -1,
message: 'IPv6 not support',
name: 'IPv6 not support'
})
return;
}
ip = `[${ipv6Addresses[0].address.address}]`;
}
logI.d(`socket bind ${ip}`);
this.socket.bind({ address: ip, family: TsUtils.isIPv6(ip) ? 2 : 1 }, err => {
// 这里不会执行,bind没有响应
if (err) {
this.dealFailResult(err);
return;
}
logI.d(`bind ${ip} success`)
callback();
});
}
else {
this.dealFailResult(error);
}
});
})
bind可以绑定ipv6的地址,参考如下demo: