针对IPv6地址的TLSSocket bind操作无响应

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); 
    } 
  }); 
})
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
HarmonyOS
2024-08-22 20:51:04
浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
zbw_apple

bind可以绑定ipv6的地址,参考如下demo:

bind_test() { 
  let tlsClient = socket.constructTLSSocketInstance(); 
  connection.getDefaultNet().then((netHandle) => { 
    connection.getConnectionProperties(netHandle, (error, info) => { 
      if (!error) { 
        console.warn('info = ', JSON.stringify(info)); 
        let ip = ''; 
        for (let index = 0; index < info.linkAddresses.length; index++) { 
          if (info.linkAddresses[index].address.family === 2) { 
            ip = info.linkAddresses[index].address.address; 
            console.warn('ip = ', ip); 
            tlsClient.bind({ address: ip, family: 2 }, err => { 
              if (err) { 
                console.log('bind fail, error = ', JSON.stringify(err)); 
                return; 
              } 
              console.log('bind success'); 
            }); 
          } 
        } 
      } else { 
        console.warn('err = ', JSON.stringify(error)); 
      } 
    }); 
  }) 
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
分享
微博
QQ
微信
回复
2024-08-23 17:00:18
相关问题
如何获取IPV6地址,有人知道吗?
1055浏览 • 1回复 待解决
HarmonyOS 获取设备IPv4地址
1009浏览 • 1回复 待解决
HarmonyOS网络库支持ipv6
758浏览 • 1回复 待解决
HarmonyOS ipv6网络支持情况
613浏览 • 1回复 待解决
HarmonyOS TLSSocket为什么强制需要bind
797浏览 • 1回复 待解决
判断当前网络环境是否支持IPV4或PV6
1411浏览 • 1回复 待解决
HarmonyOS 控件点击事件响应
772浏览 • 1回复 待解决
HarmonyOS 关于Funtionbind
441浏览 • 1回复 待解决
基于TLSSocket通信能力
1468浏览 • 1回复 待解决