Spaces:
Runtime error
Runtime error
| package client | |
| import ( | |
| "fmt" | |
| "log" | |
| "net" | |
| "NextConnect/utils" | |
| ) | |
| func connectToLocalService() net.Conn { | |
| config := utils.LoadConfig() | |
| localAddr := fmt.Sprintf("%s:%d", config.Proxy.LocalAddr, config.Proxy.LocalPort) | |
| conn, err := net.Dial("tcp", localAddr) | |
| if err != nil { | |
| log.Printf("Failed to connect to local service %s: %v", localAddr, err) | |
| return nil | |
| } | |
| log.Printf("Connected to local service %s", localAddr) | |
| return conn | |
| } | |
| func forwardData(clientConn, localConn net.Conn) { | |
| // 实现双向数据转发 | |
| go func() { | |
| buf := make([]byte, 1024) | |
| for { | |
| n, err := clientConn.Read(buf) | |
| if err != nil { | |
| log.Printf("Failed to read from client connection: %v", err) | |
| return | |
| } | |
| _, err = localConn.Write(buf[:n]) | |
| if err != nil { | |
| log.Printf("Failed to write to local connection: %v", err) | |
| return | |
| } | |
| } | |
| }() | |
| buf := make([]byte, 1024) | |
| for { | |
| n, err := localConn.Read(buf) | |
| if err != nil { | |
| log.Printf("Failed to read from local connection: %v", err) | |
| return | |
| } | |
| _, err = clientConn.Write(buf[:n]) | |
| if err != nil { | |
| log.Printf("Failed to write to client connection: %v", err) | |
| return | |
| } | |
| } | |
| } |