Golang TCP 和 UDP 编程
TCP 编程
Golang TCP Server
在 Golang 中,创建一个 TCP Server 非常简单。我们只需要使用 net.Listen
函数来监听指定的端口,并使用 net.Accept
函数来接受连接请求。下面是一个简单的 TCP Server 的代码示例:
package main
import (
"fmt"
"net"
)
func handleConnection(conn net.Conn) {
defer conn.Close()
// 处理连接请求
// TODO: 处理具体的业务逻辑
}
func main() {
addr := "127.0.0.1:8080"
listener, err := net.Listen("tcp", addr)
if err != nil {
fmt.Println("Error listening:", err.Error())
return
}
defer listener.Close()
fmt.Println("Listening on", addr)
for {
conn, err := listener.Accept()
if err != nil {
fmt.Println("Error accepting:", err.Error())
continue
}
go handleConnection(conn)
}
}
在上面的代码中,我们首先使用 net.Listen
函数来监听指定的地址和端口。然后,在一个无限循环中,使用 listener.Accept
函数来接受连接请求。当有新的连接请求到达时,会创建一个新的 goroutine 来处理连接请求,这样可以实现并发处理多个连接请求。
Golang TCP Client
在 Golang 中,创建一个 TCP Client 也很简单。我们只需要使用 net.Dial
函数来建立 TCP 连接,然后就可以通过该连接进行数据传输了。下面是一个简单的 TCP Client 的代码示例:
package main
import (
"fmt"
"net"
)
func main() {
addr := "127.0.0.1:8080"
conn, err := net.Dial("tcp", addr)
if err != nil {
fmt.Println("Error connecting:", err.Error())
return
}
defer conn.Close()
// TODO: 发送数据到服务器
}
在上面的代码中,我们使用 net.Dial
函数来建立 TCP 连接。然后,就可以通过该连接向服务器发送数据了。
UDP 编程
Golang UDP Server
在 Golang 中,创建一个 UDP Server 也很简单。我们只需要使用 net.ListenUDP
函数来监听指定的端口,并使用 conn.ReadFromUDP
函数来接收数据。下面是一个简单的 UDP Server 的代码示例:
package main
import (
"fmt"
"net"
)
func main() {
addr, err := net.ResolveUDPAddr("udp", "127.0.0.1:8080")
if err != nil {
fmt.Println("Error resolving address:", err.Error())
return
}
conn, err := net.ListenUDP("udp", addr)
if err != nil {
fmt.Println("Error listening:", err.Error())
return
}
defer conn.Close()
fmt.Println("Listening on", addr)
buf := make([]byte, 1024)
for {
n, addr, err := conn.ReadFromUDP(buf)
if err != nil {
fmt.Println("Error reading:", err.Error())
continue
}
fmt.Printf("Received %d bytes from %s\n", n, addr.String())
// 处理数据
// TODO: 处理具体的业务逻辑
}
}
在上面的代码中,我们首先使用 net.ResolveUDPAddr
函数来解析 UDP 地址和端口。然后,使用 net.ListenUDP
函数来监听指定的地址和端口。在一个无限循环中,使用 conn.ReadFromUDP
函数来接收数据。当有新的数据到达时,会打印出数据的大小和来源地址,然后再处理具体的业务逻辑。
Golang UDP Client
在 Golang 中,创建一个 UDP Client 也很简单。我们只需要使用 net.DialUDP
函数来建立 UDP 连接,然后就可以通过该连接进行数据传输了。下面是一个简单的 UDP Client 的代码示例:
package main
import (
"fmt"
"net"
)
func main() {
addr, err := net.ResolveUDPAddr("udp", "127.0.0.1:8080")
if err != nil {
fmt.Println("Error resolving address:", err.Error())
return
}
conn, err := net.DialUDP("udp", nil, addr)
if err != nil {
fmt.Println("Error connecting:", err.Error())
return
}
defer conn.Close()
// TODO: 发送数据到服务器
}
在上面的代码中,我们使用 net.ResolveUDPAddr
函数来解析 UDP 地址和端口。然后,使用 net.DialUDP
函数来建立 UDP 连接。接下来,我们就可以通过该连接向服务器发送数据了。
总结
Golang TCP 和 UDP 编程非常简单。我们只需要使用标准库提供的函数,就可以轻松地创建 TCP 和 UDP Server,以及 TCP 和 UDP Client。在使用 TCP 和 UDP 编程时,我们需要注意网络协议的特点和使用方式,以确保程序正确运行。