目录

一、UdpSocket的基本用法

二、小结


一、UdpSocket的基本用法

接收端的项目

package Study
import std.net.*

// 接收端或者服务端
main () {
    try(
        // 接收端
        receiver = UdpSocket(bindAt: 9999)
    ){
        // 绑定本地端口
        receiver.bind()
        println("接收端: ${receiver.localAddress}已启动")
        // 接收发送端数据
        let buffer = Array<Byte>(1024, repeat: 0)
        // 等待发送端发送数据
        let (senderAdderss, len) = receiver.receiveFrom(buffer)
        let data = String.fromUtf8(buffer[0..len])
        println("从${senderAdderss}接收数据, 数据: ${data}")
    }
}

发送端的项目

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

main () {
    try (
        // 发送端
        sender = UdpSocket(bindAt: 8888)
    ) {
        // 绑定本地端口
        sender.bind()
        println("发送端: ${sender.localAddress}启动")
        // 指定接收端的地址
        let data = "你好, 我是小生中的钝子生"
        // 发送数据给接收端
        sender.receiveFrom(data.toArray())
        sender.sendTo(IPSocketAddress("127.0.0.1", 9999), data.toArray())
        println("数据报发送完毕")
    }
}

 注意:这里先运行接收端的项目,在运行发送端的项目。

我们在修改以下代码,让它可以一直发送数据和接收数据,直到发送端输入N,结束所有程序。

接收端项目

package Study
import std.net.*

// 接收端或者服务端
main () {
    try(
        // 接收端
        receiver = UdpSocket(bindAt: 9999)
    ){
        // 绑定本地端口
        receiver.bind()
        println("接收端: ${receiver.localAddress}已启动")
        // 接收发送端数据
        let buffer = Array<Byte>(1024, repeat: 0)
        while (true) {
            // 等待发送端发送数据
            let (senderAdderss, len) = receiver.receiveFrom(buffer)
            let data = String.fromUtf8(buffer[0..len])
            println("从${senderAdderss}接收数据, 数据: ${data}")
            if (data == "N" || data == "n") {
                break
            }
        }
    }
}

发送端项目

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

main () {
    try (
        // 发送端
        sender = UdpSocket(bindAt: 8888)
    ) {
        // 绑定本地端口
        sender.bind()
        println("发送端: ${sender.localAddress}启动")
        // 指定接收端的地址
        while (true) {
            print("请输入: ")
            let data = getStdIn().readln().getOrThrow()
            // 发送数据给接收端
            sender.sendTo(IPSocketAddress("127.0.0.1", 9999), data.toArray())
            if (data == "N" || data == "n") {
                println("已退出")
                break
            }
        }
    }
}

二、小结

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

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐