自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(93)
  • 收藏
  • 关注

原创 助力自主可控生态,清华社《仓颉语言网络编程》正式出版

该书以网络通信基础理论为依托,结合仓颉语言独特的语法特性和技术架构,系统阐述了高效安全的网络传输实现方法。 针对网络编程领域常见的问题,不仅深入剖析问题成因,更提出针对性解决方案,并结合仓颉语言的核心类库与语法特性,通过具体开发示例进行实践演示,为读者构建从理论到应用的完整知识体系。

2025-04-03 07:04:47 355

原创 端云一体化,助力一分一段表元服务快速高效开发

HarmonyOS 5.0版本提供的开发能力非常强大,AGC在此基础上扩展了更多的功能性、易用性能力,特别是针对开发者开发过程中的痛点、难点,AGC提供的解决方案简直称得上完美,这里呼吁广大开发者,积极了解、合理利用AGC能力,为应用的开发、上架插上腾飞的翅膀。

2024-12-30 07:51:46 652

原创 国产大模型在基础计数问题上全军覆没,真智能时代仍未来临

在当前各种大模型层出不穷,应用五花八门的环境下,某些不良媒体也不遗余力的宣扬恐慌情绪,仿佛明天大家都要集体失业,后天AI就要奴役人类了。殊不知,目前的AI还处于非常早期的阶段,距离产生自主智能还有十万八千里,甚至,能不能产生自主智能尚且是个未知数,为此担惊受怕毫无必要。

2024-11-29 08:47:01 978

原创 鸿蒙网络编程系列52-仓颉版使用Request部件上传文件示例

在本系列的第51篇文章《鸿蒙网络编程系列51-仓颉版使用Request部件下载文件到本地》中介绍了如何使用Request部件下载文件,Request部件还具有上传文件的能力,本文将通过一个示例演示该能力在仓颉语言下的实现。本文使用的服务端为本系列第13篇文章《鸿蒙网络编程系列13-使用Request部件上传文件到服务端示例》中使用的服务端。

2024-11-25 11:23:24 490

原创 鸿蒙网络编程系列51-仓颉版使用Request部件下载文件到本地

鸿蒙系统提供了上传下载部件,即Request部件,封装了上传下载能力,方便了相关功能的开发。不过,在当前适配仓颉语言的Request部件中,只提供了基于代理(Agent)的上传下载能力,方便性也相对ArkTS语言差一些,毕竟是刚开始适配,以后应该会提供更丰富的功能。

2024-11-25 11:22:20 1209

原创 鸿蒙网络编程系列50-仓颉版TCP回声服务器示例

TCP服务端是基于TCP协议构建的一种网络服务模式,它为HTTP(超文本传输协议)、SMTP(简单邮件传输协议)等高层协议的应用程序提供了可靠的底层支持。在TCP服务端中,服务器启动后会监听一个或多个端口,等待客户端发起连接请求。当接收到客户端的连接请求时,服务端会响应并建立一个全双工的连接,并确保双方都准备好进行数据交换。一旦连接建立成功,服务端就能够开始接收来自客户端的数据,并根据需要向客户端发送响应信息。对于运行在TCP服务端之上的应用层协议来说,这种可靠的服务是非常重要的。

2024-11-21 11:10:38 1217 1

原创 鸿蒙网络编程系列49-仓颉版TCP客户端

TCP协议作为传输层的核心协议,确保了数据传输的可靠性与顺序性,构成了许多广泛应用的高层协议的基础。相较于UDP,TCP在正式开始数据传输前需完成三次握手以建立连接,这一过程虽然使得TCP在效率上略逊一筹,但其采用的发送-确认机制确保了数据传输的高度可靠性。此外,通过引入滑动窗口机制,TCP不仅能够有效提升数据传输效率,还能够在一定程度上优化网络资源的利用。因此,尽管TCP在建立连接方面存在一定的开销,但它凭借强大的可靠性和高效的传输特性,在众多应用场景中占据着不可或缺的地位。

2024-11-18 13:38:35 1061

原创 鸿蒙网络编程系列48-仓颉版UDP回声服务器示例

回声服务器指的是这样一种服务器,它接受客户端的连接,并且把收到的数据原样返回给客户端,本系列的第2篇文章《鸿蒙网络编程系列2-UDP回声服务器的实现》中基于ArkTS语言在API 9的环境下实现了UDP回声服务器,本文将使用仓颉语言在API 12的环境中实现类似的功能。当然,UDP是无连接的协议,没有所谓的服务端,严格来说,UDP回声服务器并不是一个服务器,而是一个UDP客户端,和普通客户端不不同的是,作为UDP回声服务器的客户端,不主动发送消息,只是在接收到消息以后,才会给发送端回复同样的消息。

2024-11-18 13:37:59 754

原创 鸿蒙网络编程系列47-仓颉版UDP客户端

本系列的第1篇文章《鸿蒙网络编程系列1-UDP通讯示例》中基于ArkTS语言在API 9的环境下演示了UDP通讯的基础用法,本文将使用仓颉语言在API 12的环境中实现类似的功能。这可能听起来有点不太现实,在ArkTS语言下可以利用kit.NetworkKit下的socket模块,该模块包含UDPSocket类,使用该类可以进行UDP通讯。

2024-11-13 14:52:49 1134

原创 鸿蒙网络编程系列46-仓颉版Web组件加载网页的三种方式

本系列的第18篇文章《鸿蒙网络编程系列18-Web组件加载网页的四种方式示例》中,使用ArkTS语言基于API 9环境演示了Web组件四种加载网页内容的方式,其中就包括使用WebviewController的loadData方法直接加载HTML脚本的方式。不过,目前的仓颉版本还不支持loadData方法,因此,本文将基于API 12环境演示Web组件加载网页的其他三种方式。

2024-11-11 14:03:03 982

原创 鸿蒙网络编程系列45-仓颉版HTTPS证书自选CA校验示例

数字证书是网络安全的重要基础,它通过数字签名来保证数据的完整性和真实性。HTTPS协议通过数字证书来保证通信的安全性,数字证书由数字证书机构(CA)颁发,购买商业版本的数字证书需要不菲的费用,周期也较长,在系统的开发和测试期间,可以使用自签名的数字证书,这种方式方便快速,也不需要费用,在系统正式部署以后,可以切换为正式的证书。鸿蒙的httpRequest类支持配置自定义的CA证书,通过配置CA证书,可以不使用系统CA证书进行校验,从而实现对HTTPS证书的自选CA校验。

2024-11-11 14:02:30 875

原创 鸿蒙网络编程系列44-仓颉版HttpRequest上传文件示例

在本系列的第21篇文章《鸿蒙网络编程系列21-使用HttpRequest上传任意文件到服务端示例》中,使用ArkTS语言基于API 9环境演示了文件上传功能的实现,本节将使用仓颉语言基于API 12环境实现类似的功能。

2024-11-04 10:41:24 1024

原创 鸿蒙网络编程系列43-仓颉版HttpRequest下载文件示例

在本系列的第10篇文章《鸿蒙网络编程系列10-使用HttpRequest下载文件到本地示例》中,使用ArkTS语言在API 9环境下演示了基于HttpRequest进行文件下载的功能,本章将使用仓颉语言在API 12环境下实现类似的功能。因为本示例使用的下载网站必须登录后才可以下载,所以,需要先模拟登录,获取登录后的cookie,再使用cookie进行文件下载。

2024-11-04 10:39:43 1260 5

原创 鸿蒙网络编程系列42-仓颉版域名解析示例

域名解析是网络开发中经常使用的功能之一,特别是对于当前版本的鸿蒙API,使用TCP或者UDP等网络协议通讯时,只能使用确定的IP地址进行绑定或者发送消息,还不支持直接使用域名,所以,通过域名解析得到对应的IP地址,然后再使用套接字进行通讯,可以避免使用者记录IP地址的困难。在本系列的第15篇文章《鸿蒙网络编程系列15-域名解析示例》中,我们基于ArkTS语言在API 9的环境下演示了对网站域名进行解析的过程,本文将使用仓颉语言在API 12的环境中实现类似的功能。//获取默认激活的数据网络。

2024-11-01 11:08:23 1021

原创 鸿蒙网络编程系列41-仓颉版HttpRequest模拟登录示例

在本系列的第9篇文章《鸿蒙网络编程系列9-使用HttpRequest模拟登录示例》中,我们基于ArkTS语言在API 9的环境下使用HttpRequest发起HTTP请求,模拟了对目标网站的登录,本文将使用仓颉语言在API 12的环境中实现类似的功能。//创建一个HTTP请求,每一个HttpRequest对象对应一个HTTP请求,如需发起多个HTTP请求,须为每个请求创建对应对象。//根据URL地址,发起HTTP网络请求,在callback回调函数中返回响应。

2024-10-31 13:15:35 1242 1

原创 鸿蒙网络编程系列40-TLS数字证书查看及验签示例

数字证书的验签是网络编程中一个重要的功能,它保证了数字证书的真实性,在此基础上,我们才可以信任该证书,从而信任基于该证书建立的安全通道,所以说,数字证书的验签是通讯安全的基石,了解数字证书验签的原理和方法,有助于我们建立安全的通讯。该方法可以通过CA的公钥来验证证书的有效性。本文将通过一个示例演示数字证书内容的查看方法以及如何对一个数字证书进行验签。

2024-10-30 13:45:02 783

原创 鸿蒙网络编程系列39-Web组件打印示例

web组件在加载了网页以后,有两种方式可以实现打印,第一种是在网页中调用W3C标准协议接口window.print()进行打印,这种方式比较简单方便,只要网页中触发了该方法即可打印,缺点是如果网页没有地方触发则不能打印;另外一种是在应用侧实现的,通过web控制器的createWebPrintDocumentAdapter方法创建打印适配器,然后将适配器传入打印的print接口即可调起打印,虽然有点复杂,但是可以打印任何网页;本文将分别演示这两种打印方式的实现。

2024-10-28 14:40:11 642

原创 鸿蒙网络编程系列38-Web组件文件下载示例

/下载开始前通知用户,用户需要在此接口中调用WebDownloadItem.start提供下载路径//下载过程中的回调//下载完成后的回调//下载失败时的回调web组件在下载状态变化时会自动调用委托中的对应回调函数。本文将通过一个示例演示web组件的下载能力,通过进度条展示下载进度的变化。

2024-10-28 14:37:55 565

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

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

2024-10-25 11:24:40 932

原创 鸿蒙网络编程系列36-固定包头可变包体解决TCP粘包问题

在本系列的第6篇文章《鸿蒙网络编程系列6-TCP数据粘包表现及原因分析》中,我们演示了TCP数据粘包的表现,如图所示:随后解释了粘包背后的可能原因,并给出了解决TCP传输粘包问题的两种思路,第一种是指定数据包结束标志,在本系列第35篇《鸿蒙网络编程系列35-通过数据包结束标志解决TCP粘包问题》中给出了具体的实现,第二种是通过固定包头指定包的长度,本文将通过一个示例演示这种思路的实现。

2024-10-25 11:23:43 1131

原创 鸿蒙网络编程系列35-通过数据包结束标志解决TCP粘包问题

在本系列的第6篇文章《鸿蒙网络编程系列6-TCP数据粘包表现及原因分析》中,我们演示了TCP数据粘包的表现,如图所示:随后解释了粘包背后的可能原因,并给出了解决TCP传输粘包问题的两种思路,其中一种就是指定数据包结束标志,本节将通过一个示例演示这种思路的实现。

2024-10-24 11:32:37 1030

原创 鸿蒙网络编程系列34-Wifi热点扫描及连接示例

Wifi热点是移动设备接入网络的重要形式,特别是在不具备固定网络接入点的情况下,可以通过Wifi热点灵活方便的接入网络,因此在日常生活中具有广泛的应用。//返回扫描到的热点列表//查询WLAN信号强度。//添加候选网络配置//连接到自己添加的候选网络(如果当前已经连接到热点,需要先断开连接)。

2024-10-24 11:09:37 1369

原创 鸿蒙网络编程系列33-TLS回声服务器示例

这种通讯方式一般来说没什么问题,但是在需要对内容保密的情况下就不可取了,毕竟它们都是通过明文进行通讯的,如果数据包在传输过程中被拦截,攻击者可以直接读取其中的信息,这使得用户的敏感信息(如密码、个人资料等)容易遭受窃听或篡改。当使用TLS进行通讯时,客户端和服务器会先进行一个握手过程,在这个过程中双方协商加密算法、交换加密密钥等,之后所有传输的数据都会被加密,即使数据包被第三方截获,由于没有解密密钥,第三方也无法读取数据的真实内容。可以看到,TLS服务端连接成功了,并且在日志区域输出了服务端的证书信息。

2024-10-22 17:13:56 865

原创 鸿蒙网络编程系列32-基于拦截器的性能监控示例

在Web开发中拦截器是一种非常有用的模式,它允许开发者在请求发送到服务器之前或响应返回给客户端之前执行一些预处理或后处理操作。这种机制特别适用于需要对所有网络请求或响应进行统一处理的情况,比如添加全局错误处理、请求头的修改、响应数据的格式化等,本示例将使用RCP模块提供的拦截器功能,实现对HTTP请求的性能监控,为简单起见,本示例只记录每个HTTP请求和响应的时间以及相关的状态信息,读者可以根据需要记录更多的信息并在此基础上进行深入的统计分析。

2024-10-22 17:10:58 878

原创 鸿蒙网络编程系列31-使用RCP调用OpenAI接口实现智能助手

在OpenAI推出GPT系列大模型以后,市场上各种类似的大模型也层出不穷,这些大模型也基本都会兼容OpenAI的接口,在开发基于大模型的应用时,选择使用OpenAI接口作为和后端大模型通讯的标准,可以更好的适配不同厂家的模型。本节将开发一个简单的智能助手,可以支持OpenAI兼容的大模型作为后端使用,本示例将演示如何使用RCP模块调用OpenAI兼容接口,如何把一个对象实例转换为Json字符串作为传递的参数,以及在接收到HTTP响应的字符串后,如何转换为对象实例。

2024-10-19 10:22:43 1022

原创 鸿蒙网络编程系列30-断点续传下载文件示例

在文件的下载中,特别是大文件的下载中,可能会出现各种原因导致的下载暂停情况,如果不做特殊处理,下次还需要从头开始下载,既浪费了时间,又浪费了流量。不过,HTTP协议通过Range首部提供了对文件分块下载的支持,也就是说可以指定服务器返回文件特定范围的数据,这就为我们实现文件的断点续传提供了基础。

2024-10-19 08:36:35 1612

原创 鸿蒙网络编程系列29-RCP下载到文件和流示例

RCP模块是Harmony NEXT全新开发的HTTP数据请求能力接口,它为上传下载能力专门封装了几个方法,针对下载能力,主要是下载到文件的downloadToFile方法:以及下载到流的downloadToStream方法:两个方法都是通过参数url指定下载要请求的地址,通过参数downloadTo指定写入的文件或者数据流。本文将通过一个示例演示RCP下载能力的使用,并分别下载到文件和数据流。

2024-10-19 08:36:16 538

原创 鸿蒙网络编程系列28-服务端证书锁定防范中间人攻击示例

TLS安全通讯的基础是基于对操作系统或者浏览器根证书的信任,如果CA证书签发机构被入侵,或者设备内置证书被篡改,都会导致TLS握手环节面临中间人攻击的风险。其实,这种风险被善意利用的情况还是很常见的,比如著名的HTTPS调试工具Fiddler,就是利用了这一点,通过让使用者信任自己签发的证书,达到替换服务端证书的目的,最终可以实现对HTTPS通讯的监听。那么,如何防范这种风险呢?

2024-10-19 08:35:48 1076

原创 鸿蒙网络编程系列27-HTTPS服务端证书的四种校验方式示例

在鸿蒙客户端对服务端发起HTTPS请求时,如果使用HttpRequest的request发起请求,那么就存在服务端数字证书的验证问题,你只有两个选择,一个是使用系统的CA,一个是使用自己选定的CA,在上文。选择证书验证模式,在请求地址输入要访问的https网址,然后单击“请求”按钮,就可以在下面的日志区域显示请求结果。这里为简单起见,自定义规则是所有的验证都通过,读者可以根据自己的需要来修改,比如不验证证书的有效期。可不可以自定义验证规则,比如,只验证数字证书的公玥,忽略有效期,就是说失效了也可以继续用。

2024-10-19 08:35:31 1283

原创 鸿蒙网络编程系列26-HTTPS证书自选CA校验示例

包括了HttpRequestOptions类型的options,可以指定发起请求的参数,其中就包括caPath,如果设置了caPath,系统将使用用户指定路径的CA证书,而不是系统的CA证书,这就给我们提供了一个方法,使用自签名证书的CA证书来验证服务端证书,从而达到正常发起HTTPS请求的目的。选择证书验证模式,在请求地址输入要访问的https网址,然后单击“请求”按钮,就可以在下面的日志区域显示请求结果。在前述关于HttpRequest的文章中,比如。步骤4:编译运行,可以使用模拟器或者真机。

2024-10-19 08:34:41 720

原创 鸿蒙网络编程系列25-TCP回声服务器的实现

在鸿蒙API10以后,提供了TCPSocketServer类,该类封装了TCP服务端的相关接口,包括用来监听的listen方法,订阅各种事件的on方法,以及发送数据的send方法,关于这些接口的简介见前文。在本示例中,要注意的是TCP服务端是可以接受多个客户端的连接的,也就是说在订阅连接事件的消息并进行处理时,每一个连接(TCPSocketConnection)都代表一个新的TCP客户端,这些客户端都是互相独立的,要处理与客户端的消息收发,就要订阅每一个连接的接收消息事件。

2024-10-19 08:34:13 986

原创 鸿蒙网络编程系列24-Web组件与应用互操作示例

在通常的APP开发中,经常会采用内嵌网页的形式,通过网页来展现丰富的动态内容,虽少了很多原生开发的功能,但是这么做无可厚非,毕竟APP需要适配的系统平台很多,比如安卓、苹果、各种PC端,现在还有如日中天的鸿蒙系统;为每一种平台做定制难度还是很大的,但是这些平台的APP都支持内嵌网页,通过网页可以屏蔽各平台的差异,从而减少开发难度,提高开发效率。

2024-10-19 08:33:37 1200

原创 鸿蒙网络编程系列23-实现一个基于鸿蒙API的HTTP服务器

订阅TCPSocketServer的连接事件,在新的客户端套接字连接上以后,会触发callback回调,在回调中包含TCPSocketConnection对象,该对象就表示TCPSocket客户端与服务端的连接。当然,HTTP的协议还是有一点复杂的,这里就不展开了,不过我们明白,只要我们按照协议格式构造出了请求应答的文本,然后使用TCP协议作为传输层进行收发即可。虽然本示例比较简单,但是具备了HTTP服务端的基本功能,可以接收客户端的输入,并且可以对客户端的输入进行处理,最后再发送给客户端。

2024-10-18 13:53:40 1347

原创 鸿蒙网络编程系列22-Web组件文件上传示例

鸿蒙的web组件可以加载网页,如果网页本身具备文件上传功能的话就比较尴尬了,因为html上传文件时,允许用户选择本地文件,但是鸿蒙因为安全性的考虑,只允许操作沙箱中的文件,所以在web组件中的上传功能本身无法直接使用。

2024-10-18 13:49:19 1012

原创 鸿蒙网络编程系列21-使用HttpRequest上传任意文件到服务端示例

在前述文章鸿蒙网络编程系列11-使用HttpRequest上传文件到服务端示例中,为简化起见,只描述了如何上传文本类型的文件到服务端,对文件的大小也有一定的限制,只能作为鸿蒙API演示使用,在实际开发中上传的文件类型多样,大小不一,本文将介绍一种适应性更广的方法,可以上传任何类型的文件到服务端,并且不限制文件的大小。

2024-10-18 11:45:52 1105

原创 鸿蒙网络编程系列20-解决web组件加载网页白屏示例

如果你不想转义,其实也有办法,就是把data中的内容进行base64编码,然后把encoding参数设置为“base64”就可以了。鸿蒙系统提供了web组件,可以在APP里内嵌该组件显示网页信息,但是,很多开发者反应一种比较奇特的情况,就是在加载的网页里,如果含有字符#的话,就会出现白屏,或者是#后的内容无法显示。里已经介绍了,这种出现白屏的情况,一般都是因为使用了WebviewController的loadData方法进行加载。前面的内容#后面的内容,咋区别对待呢!Button("加载")

2024-10-18 11:36:41 696

原创 鸿蒙网络编程系列19-获取网络连接信息并选择一种绑定到应用示例

移动设备一般都具备移动网络和无线WIFI的连接能力,有些还可以接入有线以太网,这些网络可以根据需要随时切换。鸿蒙APP可以自动适应上述的网络,一般来说,会优先使用WIFI或者有线以太网,移动网络因为要收费,不会首选使用。但是在某些特殊情形下,可能要求必须使用某一种网络,比如必须使用蜂窝网络,这时候就需要显示的配置一下,指定app使用该网络类型。

2024-10-18 11:27:52 982

原创 鸿蒙网络编程系列18-Web组件加载网页的四种方式示例

在应用界面里嵌入网页是很多快速APP开发使用的方式之一,通过这种方式可以比较好的达到多端兼容的效果,鸿蒙也一样提供了类似的能力,就是基础组件中的Web组件。当然,单纯的靠Web组件也无法实现复杂的功能,还需要对应的控制器WebviewController,两者配合可以达到最佳的控制和显示效果。

2024-10-18 10:09:38 714

原创 鸿蒙网络编程系列17-网络状态监测示例

移动设备一般都具备移动网络和无线WIFI的连接能力,有些还可以接入有线以太网,这些网络可以根据需要随时切换,在网络切换过程中,伴随着网络状态的变化,比如网卡名称、IP地址、上传下载能力等等,鸿蒙提供了网络状态变化的监测api,可以随时根据需要捕获状态的改变。

2024-10-18 09:48:00 966

原创 鸿蒙网络编程系列16-获取Wifi信息示例

对于移动设备来说,一般都提供了无线网卡,可以在需要时连接无线网络,这时候就可以获取相关的无线网络信息,比如热点名称、连接频段、链接速度、IP地址、MAC地址等,鸿蒙系统提供了丰富的无线网络管理API,可以轻松获取相关WIFI信息。

2024-10-18 09:43:37 404

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除