HarmonyOS TLSSocket发送消息报错

TLS socket单向认证。建立连接后发送数据控制台 [tls_socket.cpp 1195] write failed, return, err: 5错误。

建立连接代码如下:

public async connect() {
  if (this.isConnected) {
    return
  }

  let ipAddress : socket.NetAddress = {} as socket.NetAddress
  ipAddress.address = this.server
  ipAddress.port = this.port
  let options: socket.TLSConnectOptions = {
    address: {
      address: this.server,
      port: this.port,
      family: 1
    },
    secureOptions: {

    },
    ALPNProtocols: ["spdy/1", "http/1.1"]
  }

  let localAddress: socket.NetAddress = { address: "0.0.0.0", family: 1 }
  await this.socket.bind(localAddress)
  this.socket.on('message', async (value) => {
  })

  this.socket.connect(options, (err: BusinessError) => {
    if (err) {
      Logger.debug("socket connect failed: " + JSON.stringify(err), "socket")
      return
    }
    Logger.debug("socket did connect", "socket")
  })
}

问题:

  1. bind方法是必须调用的吗,localAddress是本地真实IP,还是0.0.0.0就可以?
  2. 客户端单向认证服务端,只验证服务端证书是否系统根证书授信,TLSConnectOptions要如何传递呢,这种情况secureOptions传空可以吗?

有完整的tlssocket调用示例吗

HarmonyOS
9天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
shlp

1、目前TLSSocket的客户端确实是需要bind,因为tls里面是在bind时候才创建连接。只有TLSSocket客户端必须bind,其他连接bind是可选的

2、本地IP使用0.0.0.0也可以

3、TLSConnectOptions传递方式可参考此链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-socket-V5#connect9

4、secureOptions不可以传空,具体内容可参考上方文档

分享
微博
QQ
微信
回复
9天前
相关问题
HarmonyOS postman 发送推送消息失败
602浏览 • 0回复 待解决
ets TCPSocket连接无法发送消息
4096浏览 • 1回复 待解决
基于TLSSocket的通信能力
614浏览 • 1回复 待解决
HarmonyOS TLSSocket为什么强制需要bind
193浏览 • 1回复 待解决