龙空技术网

仓颉编程语言TCP和UDP网络编程

一点Tech 1022

前言:

如今兄弟们对“易语言tcp”都比较注意,各位老铁们都需要知道一些“易语言tcp”的相关文章。那么小编同时在网摘上汇集了一些关于“易语言tcp””的相关知识,希望兄弟们能喜欢,姐妹们快快来了解一下吧!

在我们日常生活中计算设备之间的网络通信无处不在,个人上网聊天、看新闻、刷短视频、玩游戏,工作办公中用的视频会议、在线文档、各种管理系统等,马路车上的红绿灯、摄像头、行驶中的智能网联车、智能工厂里的各种自动化仪器、设备、机器人等物联网设备都离不开网络通信。

计算机网络通信

仓颉语言中为开发者提供了基础的网络编程功能,可使用仓颉标准库std模块下的socket包来实现传输层网络通信。仓颉语言将传输层协议中的可靠传输抽象为DatagramSocket,TCP协议对应抽象为TcpSocket,不可靠传输抽象为StreamSocket,UDP协议对应抽象为UdpSocket。另外仓颉也实现了对传输层Unix Domain协议的支持,并支持其通过可靠和不可靠传输两种方式进行通信。

仓颉语言TCP编程

下面是使用仓颉语言在可靠传输场景下的TCP编程示例:

import std.socket.*import std.time.*import std.sync.*func startTcpServer() {    // 创建服务端套接字,并绑定本机地址和端口    try (serverSocket = TcpServerSocket(bindAt: 8888)) {        serverSocket.bind() // 执行绑定				// 调用accpet方法,阻塞等待直到获取到一个客户端套接字连接        try (client = serverSocket.accept()) {            let buf = Array<Byte>(10, item: 0)            // 读取客户端消息            let count = client.read(buf)            println("Server read ${count} bytes: ${buf}")            client.write("pong".toArray())        }    }}main(): Int64 {    spawn {        startTcpServer()    }    // 创建客户端连接    try (socket = TcpSocket("127.0.0.1", 8888)) {        socket.connect()  // 执行连接        socket.write("ping".toArray())  //发送数据        let buf = Array<Byte>(10, item: 0)        // 读取服务端消息        let count = client.read(buf)        println("Client read ${count} bytes: ${buf}")    }    return 0}

在TCP可靠传输场景下,仓颉分别启动客户端套接字和服务端套接字。客户端套接字必须指定将要连接的远端地址,在连接成功后,才可以收发报文。而服务端套接字必须绑定本端地址,在绑定成功后,才可以收发报文。

仓颉语言UDP编程

下面是使用仓颉语言在不可靠传输场景下的UDP编程示例:

import std.socket.*import std.time.*import std.sync.*func startUpdServer() {    // 创建套接字,并指定本端绑定地址和端口    try (serverSocket = UdpSocket(bindAt: 6666)) {        serverSocket.bind()  //执行绑定        let buf = Array<Byte>(5, item: 0)        // 接收来自不同远端地址的报文        let (clientAddr, count) = serverSocket.receiveFrom(buf)        let sender = clientAddr.hostAddress        println("Server receive ${count} bytes: ${buf} from ${sender}")    }}main(): Int64 {    let future = spawn {        startUpdServer()    }      try (udpSocket = UdpSocket(bindAt: 0)) {        udpSocket.sendTimeout = Duration.second * 2        udpSocket.bind()        // 指定远端地址进行报文发送        udpSocket.sendTo(SocketAddress("127.0.0.1", 6666),                         Array<Byte>("hello".toArray()))    }    future.get()    return 0}

在UDP不可靠传输场景下,套接字无需区分客户端和服务端,仓颉分别启动两个套接字进行数据传输。套接字必须绑定本端地址,绑定成功后,才可以收发报文。并且,套接字也可选择性地指定远端连接地址,指定后将仅接受指定的远端地址的报文,同时将在 send 时无需指定远端地址,但发送报文至所连接成功的地址。

标签: #易语言tcp