一、TcpSocket和TcpServerSocket的基本用法

服务端项目

package Study
// 导包
import std.net.*

main () {
    try (
        // 服务端
        server = TcpServerSocket(bindAt: 9999)
    ) {
        // 绑定端口
        server.bind()
        println("服务端已启动")

        // 阻塞等待客户端的连接
        try (client = server.accept()) {
            println("服务端${client.localAddress}已连接客户端${client.remoteAddress}")
            // 接收客户端发送的数据
            let buffer = Array<Byte>(1024, repeat: 0)
            var len = 0
            // 只要数据没有读完,就一直读
            while (true) {
                len = client.read(buffer)
                if (len == 0) {
                    break
                }
                let data = String.fromUtf8(buffer[0..len])
                println("数据: ${data}")
            }
        }
    }
}

客户端项目

package Sender
// 导包
import std.net.*
import std.console.*

main () {
    try (
        // 客户端
        client = TcpSocket("127.0.0.1", 9999)
    ) {
        // 连接到服务端
        client.connect()
        println("客户端${client.localAddress}已启动")
        println("连接到${client.remoteAddress}服务端")

        let data = "你好, 我是钝子生"
        println("发送数据: ${data}")
        client.write(data.toArray())
        println("发送完毕")
    }
}

服务端也可以向客户端发送数据

服务端项目

package Study
// 导包
import std.net.*

main () {
    try (
        // 服务端
        server = TcpServerSocket(bindAt: 9999)
    ) {
        // 绑定端口
        server.bind()
        println("服务端已启动")

        // 阻塞等待客户端的连接
        try (client = server.accept()) {
            println("服务端${client.localAddress}已连接客户端${client.remoteAddress}")
            let data = "你好, 我是服务端"
            println("发送数据: ${data}")
            client.write(data.toArray())
            println("发送完毕")
        }
    }
}

客户端项目

package Sender
// 导包
import std.net.*
import std.console.*

main () {
    try (
        // 客户端
        client = TcpSocket("127.0.0.1", 9999)
    ) {
        // 连接到服务端
        client.connect()
        println("客户端${client.localAddress}已启动")
        println("连接到${client.remoteAddress}服务端")
        // 接收客户端发送的数据
        let buffer = Array<Byte>(1024, repeat: 0)
        var len = 0
        // 只要数据没有读完,就一直读
        while (true) {
            len = client.read(buffer)
            if (len == 0) {
                break
            }
            let data = String.fromUtf8(buffer[0..len])
            println("数据: ${data}")
        }
    }
}

二、小结

本章为大家详细的介绍了仓颉编程语言中TCP协议网络编程的内容,下一章,为大家带来网络编程练习题的内容。最后,创作不易,如果大家觉得我的文章对学习仓颉服务端开发有帮助的话,就动动小手,点个免费的赞吧!收到的赞越多,我的创作动力也会越大哦,谢谢大家🌹🌹🌹!!!

Logo

昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,https://devpress.csdn.net/organization/setting/general/146749包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链

更多推荐