package util import "io" // 桥接两个 IO 连接 func Bridge(conn1, conn2 io.ReadWriteCloser) error { defer conn1.Close() defer conn2.Close() errChan := make(chan error, 2) // Copy conn1 to conn2 go func() { _, err := io.Copy(conn2, conn1) errChan <- err }() // Copy conn2 to conn1 go func() { _, err := io.Copy(conn1, conn2) errChan <- err }() // Wait for either direction to finish or error return <-errChan }