阅读量:1
在 Golang 中,可以使用 net
包提供的 net.Listen
和 net.Accept
函数来实现 TCP 多路复用。以下是一个简单的示例代码:
package main import ( "fmt" "net" "os" ) func main() { listener, err := net.Listen("tcp", "127.0.0.1:8080") if err != nil { fmt.Println("Error listening:", err.Error()) os.Exit(1) } defer listener.Close() fmt.Println("Listening on 127.0.0.1:8080") for { conn, err := listener.Accept() if err != nil { fmt.Println("Error accepting:", err.Error()) os.Exit(1) } go handleConnection(conn) } } func handleConnection(conn net.Conn) { buffer := make([]byte, 1024) for { n, err := conn.Read(buffer) if err != nil { fmt.Println("Error reading:", err.Error()) return } fmt.Println("Received message:", string(buffer[:n])) _, err = conn.Write([]byte("Message received")) if err != nil { fmt.Println("Error writing:", err.Error()) return } } }
在这个示例中,net.Listen
函数用于监听指定的 TCP 地址,net.Accept
函数用于接受客户端的连接。handleConnection
函数用于处理每个客户端的连接,可以在其中执行具体的业务逻辑。使用 go
关键字可以将每个连接的处理放在一个独立的 goroutine 中,从而实现多路复用。
以上示例只是一个简单的演示,实际应用中可能需要更复杂的处理逻辑,比如使用 select
语句来同时处理多个连接,或者使用 sync.WaitGroup
来等待所有连接处理完成。具体的处理方式根据实际需求而定。