当前位置: 首页 > article >正文

【仓颉语言体验】Hello World TCP客户端 C/C++ or Python

仓颉语言体验


总体上语法和C/C++还是比较相近的,体验上更偏向Python。
注意代码后面没有分号哦;
Hello World:

main() {
    println("Hello World")
}

实现一个TCP客户端:

import std.net.* // 导入网络模块
import std.console.* // 导入控制台模块

const IP = "127.0.0.1" // 服务器IP地址
const PORT: UInt16 = 24621 // 服务器端口号
const BUFFER_SIZE = 1024 // 缓冲区大小
var g_quit = false // 用于控制程序退出的标志

main() { // 主函数
    let socket = TcpSocket(IP, PORT) // 创建TCP套接字连接服务器
    socket.connect() // 连接服务器
    // 后台协程,用于读取服务器消息
    spawn {
        while (!g_quit) {
            let data = Array<Byte>(BUFFER_SIZE, repeat: 0) // 创建数据缓冲区
            var count = 0
            try { count = socket.read(data) } catch (e: SocketException) {
                g_quit = true // 捕获异常,设置退出标志
            }
            if (g_quit || count == 0) { break } // 如果设置退出或读取到0字节数据,则退出循环
            println(String.fromUtf8(data)) // 打印服务器发送的消息
        }
    }
    // 主循环,用于发送消息到服务器
    while (!g_quit) {
        let input = Console.stdIn.readln().getOrDefault {"\n"} // 读取用户输入
        try { socket.write(input.toArray()) } catch (e: SocketException) {
            g_quit = true // 捕获异常,设置退出标志
        }
    }
    socket.close() // 关闭套接字
}
连接到指定的服务器IP和端口,然后进入两个循环:一个用于接收服务器的消息并打印到控制台,另一个用于读取用户的输入并将输入发送到服务器。如果在读取或写入过程中发生异常,程序将设置g_quit为true以退出循环,并最终关闭套接字连接。

http://www.kler.cn/a/451469.html

相关文章:

  • 后端接口设计
  • EasyExcel 模板+公式填充
  • LeetCode 热题 100_LRU 缓存(35_146_中等_C++)(哈希表 + 双向链表)(构造函数声明+初始化列表=进行变量初始化和赋值)
  • C++ Eigen常见的高级用法 [学习笔记]
  • Doris Tablet 损坏如何应对?能恢复数据吗?
  • Docker 设置代理的三种方法(2024年12月19日亲自测试)
  • ResEmoteNet论文阅读与推理
  • 【可视化开源性能压测工具】小巧而强大的oha
  • 【数据结构2】线性表——顺序表
  • 动态规划:石子合并 图文+举例超详细说明
  • OpenCV相机标定与3D重建(26)计算两个二维点集之间的部分仿射变换矩阵(2x3)函数 estimateAffinePartial2D()的使用
  • AWTK 在树莓派 pico 上的移植笔记
  • HTMLCSSJavaScriptDOM 之间的关系?
  • 组态页面渲染器通过npm包方式使用页面没有渲染成功的问题
  • gesp(三级)(14)洛谷:B4039:[GESP202409 三级] 回文拼接
  • 贪心算法求解加油站问题
  • 《ROS2 机器人开发 从入门道实践》 鱼香ROS2——第4章内容
  • WebAuthn 项目常见问题解决方案
  • C++抽象类与类继承相关注意事项 [学习笔记]
  • select 1 from table的作用 详解
  • 【ue5学习笔记2】在场景放入一个物体的蓝图输入事件无效?
  • sentinel学习笔记8-系统自适应与黑白名单限流
  • LabVIEW实现GSM/GPRS通信
  • LeetCode 3138.同位字符串连接的最小长度:计数(一个数最多128个因数)
  • Python中定位元素包含文本信息的详细解析与代码示例
  • QWebChannel实现与JS的交互