Skip to content

Instantly share code, notes, and snippets.

@bit-rocket
Forked from qhwa/go_port_forwarding.go
Created July 26, 2023 09:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bit-rocket/09231f62adc9f3518be9b3556b025392 to your computer and use it in GitHub Desktop.
Save bit-rocket/09231f62adc9f3518be9b3556b025392 to your computer and use it in GitHub Desktop.
network port forwarding in go lang
package main
import (
"fmt"
"io"
"net"
)
func main() {
ln, err := net.Listen("tcp", ":8080")
if err != nil {
panic(err)
}
for {
conn, err := ln.Accept()
if err != nil {
panic(err)
}
go handleRequest(conn)
}
}
func handleRequest(conn net.Conn) {
fmt.Println("new client")
proxy, err := net.Dial("tcp", "127.0.0.1:80")
if err != nil {
panic(err)
}
fmt.Println("proxy connected")
go copyIO(conn, proxy)
go copyIO(proxy, conn)
}
func copyIO(src, dest net.Conn) {
defer src.Close()
defer dest.Close()
io.Copy(src, dest)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment