華為倉頡語言體驗:一個簡單的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.pswp.cn/diannao/38705.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/38705.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/38705.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

排序題目:多數元素 II

文章目錄 題目標題和出處難度題目描述要求示例數據范圍進階 前言解法一思路和算法代碼復雜度分析 解法二思路和算法代碼復雜度分析 解法三思路和算法代碼復雜度分析 題目 標題和出處 標題&#xff1a;多數元素 II 出處&#xff1a;229. 多數元素 II 難度 3 級 題目描述 …

css高度0到高度auto,過渡的設置

1.css從高度0到高度auto,過渡設置 方法(vue代碼) 你可以通過設置transform: scale(0);到 transform: scale(1); 來實現,具體代碼 你也可以通過設置transform: scaleY(0);到 transform: scaleY(1); 這兩種展示的效果不一樣,你可以看看你喜歡那種 // css代碼// 原來的css類 .s…

港口危險貨物安全管理人員考試題庫(含答案)

一、單選題 1.化學品安全標簽內容中警示詞有( )種分別進行危害程度的警示。 A、3 B、4 C、5 參考答案:A 2.運輸放射性物品&#xff0c;應當使用( )的放射性物品運輸包裝容器(以下簡稱運輸容器)。 A、專業 B、專用 C、統一 D、定制 參考答案:B 3.庫區儀表及計算機監控管理系…

中電金信:金Gien樂道 | 6月熱門新聞盤點 回顧這一月的焦點事件

“以檢之力 e企守護”——上海市檢一分院與中電金信開展聯學聯建 6月24日&#xff0c;上海市人民檢察院第一分院與中電金信數字科技集團股份有限公司聯合開展“以檢之力 e企守護”聯學聯建活動。雙方共同參觀了全國檢察機關證券期貨犯罪辦案基地和重大職務犯罪案件辦理&#xf…

HTML5與3D打印:探索網頁內容的物理化可能

隨著科技的飛速發展&#xff0c;互聯網與物理世界的交匯點日益增多。HTML5作為當前網頁開發的主流標準&#xff0c;不僅推動了網頁內容的豐富性和互動性&#xff0c;還在與3D打印技術的結合中&#xff0c;展現出了將網頁內容物理化的巨大潛力。本文將探討HTML5與3D打印的結合點…

C++ 中的數據類型

C規定在創建一個變量或者常量時&#xff0c;必須要指定出相應的數據類型&#xff0c;否則無法給變量分配內存. 1 整型 作用&#xff1a;整型變量表示的是整數類型的數據 C中能夠表示整型的類型有以下幾種方式&#xff0c;區別在于所占內存空間不同&#xff1a; 數據類型占用…

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 二進制…

【小白入門】關于視頻剪輯該自學還是報課?

★解密&#xff1a;【賦能計劃—剪輯小白入門】 ★ 在這個視頻流量為王的時代&#xff0c;人人都想打造屬于自己的IP&#xff0c;今年更是有許多企業家也紛紛下場干起來了&#xff0c;網上曾流行這樣的一句話&#xff1a;“現在人們的生活方式改變了&#xff0c;所有事情都值得…

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…

VLAN基礎

一、什么是Vlan VLAN&#xff08;Virtual Local Area Network&#xff09;是虛擬局域網的簡稱&#xff0c;是一種將單一物理局域網&#xff08;LAN&#xff09;在邏輯層面上劃分為多個獨立的廣播域的技術。每個VLAN都是一個獨立的廣播域&#xff0c;其內部主機可以直接通信&am…

python自動化辦公之shutil

目錄 1復制文件&#xff0c;此時存在2份相同文件 2移動文件&#xff0c;此時僅有1份文件 3刪除文件&#xff0c;此時0份文件 用到的庫&#xff1a;shutil&#xff0c;os 實現的效果&#xff1a;復制文件&#xff0c;移動文件&#xff0c;刪除文件 代碼&#xff1a; 1復制…

并發請求數量限制

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>并發請求數量限制</title> </head> <…

使用Colly庫進行高效的網絡爬蟲開發

引言 隨著互聯網技術的飛速發展&#xff0c;網絡數據已成為信息獲取的重要來源。網絡爬蟲作為自動獲取網頁內容的工具&#xff0c;在數據分析、市場研究、信息聚合等領域發揮著重要作用。本文將介紹如何使用Go語言中的Colly庫來開發高效的網絡爬蟲。 什么是Colly庫&#xff1…

力扣974.和可被K整除的子數組

力扣974.和可被K整除的子數組 將余數相同的做差 若為負數要翻正再存入哈希表若為正數要存入哈希表統一操作 (sj % k k ) % k class Solution {public:int subarraysDivByK(vector<int>& nums, int k) {int n nums.size();vector<long> s(n1);for(int i0;i…