发布时间:2024-12-23 03:09:24
在golang中,net包是一个非常重要的标准库,提供了许多与网络相关的功能。本文将介绍net包的用法,并且分别介绍TCP和UDP协议的示例代码。
下面是一个简单的TCP服务器示例代码:
```go package main import ( "fmt" "log" "net" ) func handleConnection(conn net.Conn) { buffer := make([]byte, 1024) _, err := conn.Read(buffer) if err != nil { log.Fatal(err) } fmt.Printf("Received: %s\n", buffer) conn.Write([]byte("Hello from server!\n")) conn.Close() } func main() { listener, err := net.Listen("tcp", "localhost:8080") if err != nil { log.Fatal(err) } defer listener.Close() for { conn, err := listener.Accept() if err != nil { log.Fatal(err) } go handleConnection(conn) } } ```在上面的代码中,我们首先创建了一个TCP监听器,然后使用Accept()方法等待客户端的连接。一旦有新的连接到来,就会创建一个协程来处理。handleConnection函数用于处理连接,并在客户端发送数据后返回一条消息。
下面是一个简单的UDP客户端和服务器示例代码:
```go package main import ( "fmt" "log" "net" ) func main() { serverAddr, err := net.ResolveUDPAddr("udp", "localhost:8080") if err != nil { log.Fatal(err) } conn, err := net.DialUDP("udp", nil, serverAddr) if err != nil { log.Fatal(err) } defer conn.Close() message := []byte("Hello from client!") _, err = conn.Write(message) if err != nil { log.Fatal(err) } buffer := make([]byte, 1024) n, addr, err := conn.ReadFromUDP(buffer) if err != nil { log.Fatal(err) } fmt.Printf("Received: %s from %s\n", buffer[:n], addr) } ```在上面的代码中,我们首先创建了一个UDP服务器地址,然后使用DialUDP方法连接到服务器。然后我们发送一条消息到服务器,并等待服务器的回复。最后打印接收到的消息和服务器地址。
本文介绍了golang中net包的基本用法,并提供了TCP和UDP协议的示例代码。使用net包可以轻松地实现网络通信功能,方便快捷。希望本文对于正在学习golang开发的人员有所帮助。