仓颉开发之——网络编程(17)

一 概述

  • 网络通信
  • Socket编程
  • HTTP编程
  • WebSocket编程

二 网络通信

  1. 传输层协议:UDP、DCP
  2. 应用层协议:HTTP
  3. WebSocket协议:双向传输

三 Socket编程

3.1 TCP编程

  1. 创建服务端套接字,并指定本端绑定地址
  2. 执行绑定
  3. 执行 accpet 动作,将阻塞等待,直到获取到一个客户端套接字连接
  4. 同步创建客户端套接字,并指定远端的待连接的地址
  5. 执行连接
  6. 连接成功后,服务端会在 accept 接口返回一个新的套接字,并进行收发报文

3.2 UPD编程

  1. 创建套接字,并指定本端绑定地址
  2. 执行绑定
  3. 指定远端地址进行报文发送

四 HTTP编程

4.1 概念

  • HTTP 是一种通用的应用层协议
  • 常用的请求类型为 GET 和 POST

4.2 示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import net.http.*
import std.time.*
import std.sync.*

func startServer(): Unit {
// 1. 构建 Server 实例
let server = ServerBuilder()
.addr("127.0.0.1")
.port(8080)
.build()
// 2. 注册请求处理逻辑
server.distributor.register("/hello", {httpContext =>
httpContext.responseBuilder.body("Hello Cangjie!")
})
// 3. 启动服务
server.serve()
}

func startClient(): Unit {
// 1. 构建 client 实例
let client = ClientBuilder().build()
// 2. 发送 request
let resp = client.get("http://127.0.0.1:8080/hello")
// 3. 读取response
println(resp)
// 4. 关闭连接
client.close()
}

main () {
spawn {
startServer()
}
sleep(Duration.second)
startClient()
}

五 WebSocket编程

  • WebSocket进行一次握手,即可创建长久的连接,并且进行双向的数据传输
  • WebSocket 也是一种常用的应用层协议

六 思维导图

七 参考

  • 仓颉官方文档—网络编程
  • 仓颉编程语言入门教程