nextconnect / client /connector.go
ZHZ1024's picture
Upload 14 files
34fee23 verified
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
}
}
}