创建一个web服务端,同时创建一个客户端去读取这个服务端。
也满足浏览器打开web的需求。
直接上代码。
import net.http.*
import std.time.*
import std.sync.*
import std.log.LogLevel
// 1. 构建 Server 实例
let server = ServerBuilder()
.addr("127.0.0.1")
.port(7788)
.build()
func startServer(): Unit {
// 2. 注册请求处理逻辑
server.distributor.register("/hello", {httpContext =>
httpContext.responseBuilder.body("Hello Cangjie!")
})
server.logger.level = OFF
// 3. 启动服务
server.serve()
}
func startClient(): Unit {
// 1. 构建 client 实例
let client = ClientBuilder().build()
// 2. 发送 request
let response = client.get("http://127.0.0.1:${server.port}/hello")
// 3. 读取response body
let buffer = Array<Byte>(32, item: 0)
let length = response.body.read(buffer)
println(String.fromUtf8(buffer[..length]))
// 4. 关闭连接
client.close()
}
main () {
// 启动服务端
let server: Future<Unit> = spawn {
startServer()
}
// 阻塞当前运行的线程后再让客户端访问服务端,如无需要可去掉
sleep(Duration.second)
startClient()
// 服务端运行中
server.get()
// 如果只想实现客户端访问服务端,一次性的,那么如下即可
/*
spawn {
startServer()
}
sleep(Duration.second)
startClient()
*/
}
此后执行编译cjc server.cj o server.exe
,然后运行server.exe
能看到窗体:
打开浏览器,输入 http://127.0.0.1:7788/hello
如果还不会安装,或者遇到什么问题,那么请看文章:
《仓颉笔记——windows11安装启用cangjie语言,并使用vscode编写“你好,世界”》
《从 0 开始安装和运行 Cangjie (仓颉)》