Socket Programming
Inspect one language lane at a time so line-level text and code deltas stay readable.
Diff Lane
English
0 modified sections0 code block delta0 anchor delta
Diff Lane
中文
1 modified sections0 code block delta0 anchor delta
modifiedUDP 编程code
v1.0.5
Section Text
1
UDP 作为一种常见的不可靠传输协议,以 UDP 类型套接字举例,仓颉在不可靠传输场景下的可参考的编程模型如下:2
3
1. 创建套接字,并指定本端绑定地址。4
2. 执行绑定。5
3. 指定远端地址进行报文发送。6
4. 不连接远端地址场景下,可以收取来自不同远端地址的报文,并返回远端地址信息。7
8
UDP 收发报文程序示例如下:9
10
<!-- verify -->11
12
13
编译执行上述代码,将打印:Code 1 · cangjie
1
import std.time.*2
import std.sync.*3
import std.net.*4
5
let SERVER_PORT: UInt16 = 80806
7
func runUpdServer() {8
try (serverSocket = UdpSocket(bindAt: SERVER_PORT)) {9
serverSocket.bind()10
11
let buf = Array<Byte>(3, repeat: 0)12
let (clientAddr, count) = serverSocket.receiveFrom(buf)13
let sender = (clientAddr as IPSocketAddress)?.address.toString() ?? ""14
15
// Server receive 3 bytes: [1, 2, 3] from 127.0.0.116
println("Server receive ${count} bytes: ${buf} from ${sender}")17
}18
}19
20
main(): Int64 {21
let future = spawn {22
runUpdServer()23
}24
sleep(Duration.second)25
26
try (udpSocket = UdpSocket(bindAt: 0)) {27
udpSocket.sendTimeout = Duration.second * 228
udpSocket.bind()29
udpSocket.sendTo(30
IPSocketAddress("127.0.0.1", SERVER_PORT),31
[1, 2, 3]32
)33
}34
35
future.get()36
37
return 038
}Code 2 · text
1
Server receive 3 bytes: [1, 2, 3] from 127.0.0.1v1.1.0
Section Text
1
UDP 作为一种常见的不可靠传输协议,以 UDP 类型套接字举例,仓颉在不可靠传输场景下的可参考的编程模型如下:2
3
1. 创建套接字,并指定本端绑定地址。4
2. 执行绑定。5
3. 指定远端地址进行报文发送。6
4. 不连接远端地址场景下,可以收取来自不同远端地址的报文,并返回远端地址信息。7
8
UDP 收发报文程序示例如下:9
10
<!-- verify -->11
12
13
编译执行上述代码,将打印:Code 1 · cangjie
1
import std.time.*2
import std.sync.*3
import std.net.*4
5
let SERVER_PORT: UInt16 = 80806
7
func runUdpServer() {8
try (serverSocket = UdpSocket(bindAt: SERVER_PORT)) {9
serverSocket.bind()10
11
let buf = Array<Byte>(3, repeat: 0)12
let (clientAddr, count) = serverSocket.receiveFrom(buf)13
let sender = (clientAddr as IPSocketAddress)?.address.toString() ?? ""14
15
// Server receive 3 bytes: [1, 2, 3] from 127.0.0.116
println("Server receive ${count} bytes: ${buf} from ${sender}")17
}18
}19
20
main(): Int64 {21
let future = spawn {22
runUdpServer()23
}24
sleep(Duration.second)25
26
try (udpSocket = UdpSocket(bindAt: 0)) {27
udpSocket.sendTimeout = Duration.second * 228
udpSocket.bind()29
udpSocket.sendTo(30
IPSocketAddress("127.0.0.1", SERVER_PORT),31
[1, 2, 3]32
)33
}34
35
future.get()36
37
return 038
}Code 2 · text
1
Server receive 3 bytes: [1, 2, 3] from 127.0.0.1