华为仓颉语言体验:一个简单的socket服务端实现

前言
由于仓颉目前是内测状态, 不能展示仓颉的详细信息,但是华为仓颉官网的公共文档的内容是可以公开的。

我相信有不少喜欢编程的朋友都申请了内测,但是一些编程初学者应该和我一样,处于摸索阶段。所以,我这里把我测试的一个示例程序分享一下,以便大家参考。

环境配置
系统:windows 10
平台:visual studio code
语言:仓颉
库:–

一、仓颉sdk和vscode插件获取

这个需要关注仓颉编程的公众号,要去填内测申请,等官方审核通过,就可以在gitcode上下载,需要注册一个gitcode账号。
根据我的经验,这个审核挺快的,基本上一天就可以。至于gitcode的界面,根据官方要求,暂时无法展示。

二、socket服务端程序

下载安装好sdk和插件后,在visual studio code上新建一个仓颉项目,这里暂时也无法展示仓颉项目的具体内容,但是如果你已经申请内测成功,应该就了解了。
我这里主要说一下代码,官方文档有一个socket的示例,这是公开文档,如下:
在这里插入图片描述
代码:

import std.socket.*
import std.time.* 导入 std.time.*
import std.sync.*let SERVER_PORT: UInt16 = 8080func runTcpServer() {try (serverSocket = TcpServerSocket(bindAt: SERVER_PORT)) {serverSocket.bind()try (client = serverSocket.accept()) {let buf = Array<Byte>(10, item: 0)let count = client.read(buf)// 服务端读取到的数据为: [1, 2, 3, 0, 0, 0, 0, 0, 0, 0]println("Server read ${count} bytes: ${buf}")}}
}main(): Int64 {spawn {runTcpServer()}sleep(Duration.millisecond * 500)try (socket = TcpSocket("127.0.0.1", SERVER_PORT)) {socket.connect()socket.write(Array<Byte>([1, 2, 3]))}return 0
}

这里有个注意的问题,如果你按照文档上面提供的导入方法,即:

import std.socket.*
import std.time.* 
import std.sync.*

vscode很可能会提示错误,你可以改一下:

from std import socket.*
from std import time.*
from std import sync.*

至少,在我测试的时候,改成from这种导入形式是可以的。

我们再来看socket,官方文档提供的示例,是将服务端和客户端写在一起,而且只运行了一次,但我们实际使用中,通常都是循环读取的,所以我们来改写一下:

   let port:UInt16=2000let server1=TcpServerSocket(bindAt:port)server1.bind()try(clt1=server1.accept()){println("client is ${clt1}")var i:UInt16=0while (i<20){if (clt1 is Nothing){println("no client")}else{let buf=Array<Byte>(10,item:0)let count=clt1.read(buf)println("server read ${count} bytes:${buf}")}//}i +=1sleep(Duration.millisecond * 1000)}}

可以看到,我们使用了while来循环,在上面的示例中,我为while循环添加了条件,即循环20次就退出,我本来是想用loop的,但我在仓颉的官方文档中没找到loop关键字。
我们运行以上代码后,程序就会生一个本地端口为2000的server,这时候,你可以使用其他调试助手,打开一个socket客户端,连接到“127.0.0.1:2000”,然后给服务器发送数据,可以在vscode的终端上看到接收数据:
在这里插入图片描述
以上是我初学仓颉的一个体验,根据仓颉的官方文档,可以发现仓颉语言缝合不少其他语言的特性,对于有经验的程序员来说,应该是感到很熟悉的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/38705.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中电金信:金Gien乐道 | 6月热门新闻盘点 回顾这一月的焦点事件

“以检之力 e企守护”——上海市检一分院与中电金信开展联学联建 6月24日&#xff0c;上海市人民检察院第一分院与中电金信数字科技集团股份有限公司联合开展“以检之力 e企守护”联学联建活动。双方共同参观了全国检察机关证券期货犯罪办案基地和重大职务犯罪案件办理&#xf…

python(6)numpy的使用详细讲解

在numpy中&#xff0c;最基本的数据结构是数组&#xff0c;因此我们首先需要了解如何创建一个数组。numpy提供了多种数组创建方法&#xff0c;包括从列表或元组创建、从文件中读取数据、使用特定函数创建等。下面是一些常用的创建方法&#xff1a; 一、创建数组 1. 从列表或元…

【MySQL备份】Percona XtraBackup基础篇

目录 1.关于Percona XtraBackup 2. Percona XtraBackup有哪些特点&#xff1f; 3.安装Percona XtraBackup 3.1.环境信息 3.2.安装步骤 4. xtrabackup内部流程图 5.Percona XtraBackup基础语法 5.1.全量备份 5.2.增量备份 5.2.1.基于全量备份的增量备份 5.2.2.基于前…

[leetcode]max-consecutive-ones 最大连续1的个数

. - 力扣&#xff08;LeetCode&#xff09; class Solution { public:int findMaxConsecutiveOnes(vector<int>& nums) {int maxCount 0, count 0;int n nums.size();for (int i 0; i < n; i) {if (nums[i] 1) {count;maxCount max(maxCount, count);} else…

安装和微调大模型(基于LLaMA-Factory)

打开终端&#xff08;在Unix或macOS上&#xff09;或命令提示符/Anaconda Prompt&#xff08;在Windows上&#xff09;。 创建一个名为lora的虚拟环境并指定Python版本为3.9。 conda create --name lora python3.9激活新创建的虚拟环境。 conda activate lora克隆项目。 git …

详解COB显示屏的技术特点

COB&#xff08;Chip on Board&#xff09;显示屏作为一种采用倒装COB封装技术的LED显示屏&#xff0c;在显示效果以及使用稳定性跟防护性方面&#xff0c;拥有更大优势&#xff0c;今天跟随COB显示屏厂家中品瑞科技一起来看看&#xff0c;COB显示屏的技术特点&#xff1a; 1、…

如何在OpenEuler 上快速部署一套Zabbix7.0监控系统

如何在OpenEuler 上快速部署一套Zabbix监控系统 一、环境信息 用途机器IP操作系统备注zabbix-server172.22.33.180openeuler 22.03 LTS SP37.0 LTS 版本&#xff0c;容器部署zabbix-agent172.16.10.182openeuler 22.03 LTS SP37.0 源码编译部署 二、Docker 部署 2.1 二进制…

Anti-Canine Heartworm Antibody (Chicken) - HRP Conjugated

犬心丝虫&#xff08;学名Dirofilaria immitis&#xff09;是一种寄生丝虫&#xff0c;通过蚊子叮咬而传播。感染犬在早期阶段&#xff0c;大多不会出现症状。随着病情发展&#xff0c;将出现咳嗽、呼吸困难等症状&#xff0c;并伴有右心功能衰竭&#xff0c;最终全身衰弱或虚脱…

检索增强生成RAG系列3--RAG优化之文档处理

在上一章中罗列了对RAG准确度的几个重要关键点&#xff0c;主要包括2方面&#xff0c;这一章就针对其中一方面&#xff0c;来做详细的讲解以及其解决方案。 目录 1 文档解析1.1 文档解析工具1.2 实战经验1.3 代码演示 2 文档分块2.1 分块算法2.2 实战经验2.3 代码演示 3 文档e…

python自动化办公之shutil

目录 1复制文件&#xff0c;此时存在2份相同文件 2移动文件&#xff0c;此时仅有1份文件 3删除文件&#xff0c;此时0份文件 用到的库&#xff1a;shutil&#xff0c;os 实现的效果&#xff1a;复制文件&#xff0c;移动文件&#xff0c;删除文件 代码&#xff1a; 1复制…

使用Colly库进行高效的网络爬虫开发

引言 随着互联网技术的飞速发展&#xff0c;网络数据已成为信息获取的重要来源。网络爬虫作为自动获取网页内容的工具&#xff0c;在数据分析、市场研究、信息聚合等领域发挥着重要作用。本文将介绍如何使用Go语言中的Colly库来开发高效的网络爬虫。 什么是Colly库&#xff1…

超声波清洗机怎么选?极力推荐四款口碑大牌超声波清洗机

相信大家都知道超声波清洗机&#xff0c;每次眼镜脏的时候&#xff0c;去眼镜店里让老板帮忙清洗&#xff0c;她们用的就是超声波清洗机&#xff0c;通过超声波的原理深入物品深处清洁&#xff0c;清洁效果非常好。相对手洗的方式&#xff0c;超声波清洗机能够保护镜片在清洗过…

【开放词汇分割】Side Adapter Network for Open-Vocabulary Semantic Segmentation

论文链接&#xff1a;Side Adapter Network for Open-Vocabulary Semantic Segmentation 代码链接&#xff1a;https://github.com/MendelXu/SAN 作者&#xff1a;Mengde Xu,Zheng Zhang,Fangyun Wei,Han Hu,Xiang Bai 发表单位&#xff1a;华中科技大学、微软亚洲研究院 会…

Vue 快速入门案例

步骤一&#xff1a;引入vue.js文件 添加<script>标签并标明路径 步骤二&#xff1a;定义Vue对象 el Vue接管区域 data 定义数据模型 步骤三&#xff1a;编写视图层的展示 v-model 绑定数据模型 {{要展示的数据模型}} 运行效果 总结 文本框里的值&a…

雪花算法的原理以及实现

文章目录 一、简介二、算法优缺点三、算法实现 一、简介 有这么一种说法&#xff0c;自然界中并不存在两片完全一样的雪花的。每一片雪花都拥有自己漂亮独特的形状、独一无二。雪花算法也表示生成的ID如雪花般独一无二。 雪花算法 &#xff08;SnowFlake &#xff09;算法&am…

几度互联网站群管理系统全媒体解决方案

随着高考的结束&#xff0c;各高校开启了紧张的招生宣传工作&#xff0c;几度互联网站群系统助力各高校招生宣传。 学校官方网站是互联网时代学校对外交流的重要途径和信息公开的主要载体&#xff0c;是展示学校形象、密切联系师生的重要窗口&#xff0c;是加强校园宣传思想工…

【MySQL备份】Percona XtraBackup篇

目录 1.关于Percona XtraBackup 2. Percona XtraBackup有哪些特点&#xff1f; 3.安装Percona XtraBackup 3.1.环境信息 3.2.安装步骤 4.实战演练 4.1.全量备份与恢复 4.2.总结 1.关于Percona XtraBackup Percona XtraBackup是世界上唯一的开源、免费的MySQL热备份 为…

品牌推广方案怎么写?策划书模板与实战技巧分享

品牌想要快速得到市场的认可&#xff0c;一个精心策划的品牌推广方案是脱颖而出的关键。 作为一名手工酸奶品牌创始人&#xff0c;目前全国也复制了100多家门店&#xff0c;这篇文章&#xff0c;我和大家分享下&#xff0c;如何做一个清晰的结构框架、策划书模板以及实战技巧&…

【论文阅读】-- TimeNotes:时间序列数据的有效图表可视化和交互技术研究

TimeNotes: A Study on Effective Chart Visualization and Interaction Techniques for Time-Series Data 摘要1 介绍和动机2 文献2.1 时间序列数据探索2.1.1 数据聚合2.1.2 基于透镜2.1.3 基于布局 3 任务和设计3.1 数据3.2 领域表征3.3 探索、分析和呈现 4 TimeNotes4.1 布局…

Kaggle竞赛——房价预测

目录 1. 特征分析1.1 数据集导入1.2 统计缺失值1.3 可视化缺失值1.4 缺失值相关性分析1.5 训练集和测试集缺失数据对比1.6 统计特征的数据类型1.7 数值型特征分布直方图1.8 数值型特征与房价的线性关系1.9 非数值型特征的分布直方图1.10 非数值型特征箱线图1.11 数值型特征填充…