HarmonyOS 鸿蒙Next网络编程系列37-基于TCP套接字的TLS通讯客户端示例

HarmonyOS 鸿蒙Next网络编程系列37-基于TCP套接字的TLS通讯客户端示例

1. TLS通讯简介

在本系列的第7、8篇文章,分别讲解了基于TLS传输单向和双向认证的通讯示例,这两个示例都是TLS客户端直接连接TLS服务端的。众所周知,TLS通讯也是基于TCP协议的,首先在TCP协议上,客户端和服务端连接成功,然后双方经过TLS握手过程,认证数字证书,最后再进行加密的通讯。既然这样,能不能先显式建立TCP连接,然后把这个连接再升级为TLS协议呢?在鸿蒙的早期版本是不可以的,不过在API 12提供了一个新的函数:

function constructTLSSocketInstance(tcpSocket: TCPSocket): TLSSocket;

通过该函数,可以基于一个已经建立连接的TCP套接字生成TLS客户端,然后不经过调用bind函数,就可以和服务端建立连接。

本文将通过一个示例演示上述过程,也就是首先建立一个TCP客户端,然后该客户端通过TCP协议和TLS服务端建立连接,然后再基于该TCP客户端创建TLS客户端,在配置好服务端CA证书后,再和TLS服务端建立连接,最后进行正常的TLS通讯,本示例可以使用在本系列第33篇文章《鸿蒙网络编程系列33-TLS回声服务器示例》中创建的TLS服务端,并且需要预先启动服务端。

2. 基于TCP套接字的TLS客户端演示

输入服务端地址和端口,,然后单击“选择”按钮选择服务端证书的CA证书,最后单击“连接”按钮即可连接TLS服务端,如图所示:

通过日志区域可以看到,首先建立了TCP连接,然后再建立了TLS连接。连接成功后,输入要发送的消息,再单击“发送”按钮即可发送消息给服务端,如图所示:

此时查看服务端,也可以看到客户端发送的消息,如图所示:

3. 基于TCP套接字的TLS客户端示例编写

下面详细介绍创建该示例的步骤。 步骤1:创建Empty Ability项目。 步骤2:在module.json5配置文件加上对权限的声明:

"requestPermissions": [
      {
        "name": "ohos.permission.INTERNET"
      }
    ]

这里添加了访问互联网的权限。 步骤3:在Index.ets文件里添加如下的代码:

步骤4:编译运行,可以使用模拟器或者真机。
步骤5:按照本节第2部分“基于TCP套接字的TLS客户端演示”操作即可。

4. 代码分析

本示例关键点在于创建TLS客户端的过程,首先要创建TCP客户端并且连接成功,其次才能创建TLS客户端:

另外一点是关于配置TLS客户端的服务端CA证书,选择证书后需要复制到沙箱才能读取文件内容,这一点是通过函数copy2SandboxAndReadContent实现的。

(本文作者原创,除非明确授权禁止转载)

本文源码地址: https://gitee.com/zl3624/harmonyos_network_samples/tree/master/code/tls/TCPBaseTLSClient

本系列源码地址: https://gitee.com/zl3624/harmonyos_network_samples


更多关于HarmonyOS 鸿蒙Next网络编程系列37-基于TCP套接字的TLS通讯客户端示例的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于HarmonyOS 鸿蒙Next网络编程系列37-基于TCP套接字的TLS通讯客户端示例的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


针对帖子标题“HarmonyOS 鸿蒙Next网络编程系列37-基于TCP套接字的TLS通讯客户端示例”,以下是一个简洁且专业的回答:

在HarmonyOS中,实现基于TCP套接字的TLS通讯客户端,主要依赖于系统提供的网络编程接口和TLS加密库。具体步骤如下:

  1. 创建TCP套接字:使用HarmonyOS的网络编程API创建TCP套接字,并连接到服务器。

  2. 配置TLS上下文:初始化TLS上下文,包括加载证书、设置验证模式等。HarmonyOS可能提供了专门的TLS库或API来简化这一过程。

  3. 建立TLS连接:将TCP套接字升级为TLS连接。这通常涉及将套接字传递给TLS库,并执行握手过程。

  4. 数据交换:一旦TLS连接建立,就可以通过该连接安全地发送和接收数据。使用TLS库提供的数据读写函数进行操作。

  5. 关闭连接:完成通讯后,正确关闭TLS连接和TCP套接字,释放资源。

请注意,具体实现细节可能因HarmonyOS版本和API更新而有所不同。建议参考HarmonyOS的官方文档或示例代码,以获取最新的API使用方法和最佳实践。

如果问题依旧没法解决请联系官网客服,官网地址是: https://www.itying.com/category-93-b0.html

回到顶部