1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| package main import ( "fmt" "io" "net" "os" )
func main() { // Linux 0.0.0.0 , Windows: 127.0.0.1 host := "127.0.0.1" port := "4001" l, err := net.Listen("tcp", fmt.Sprintf("%s:%s", host, port)) if err != nil { fmt.Println(err, err.Error()) os.Exit(0) }
for { //等待连接 s_conn, err := l.Accept() if err != nil { continue }
//反代理 d_tcpAddr, _ := net.ResolveTCPAddr("tcp4", "127.0.0.1:25565") d_conn, err := net.DialTCP("tcp", nil, d_tcpAddr) if err != nil { fmt.Println(err) s_conn.Write([]byte("can't connect 127.0.0.1:25565")) s_conn.Close() continue } //将 连接方的数据 发送给 反代理 go io.Copy(s_conn, d_conn) //将 反代理的端口 发送 连接方 go io.Copy(d_conn, s_conn) } }
|