Skip to content

Instantly share code, notes, and snippets.

@qhwa
Last active September 8, 2024 19:01
Show Gist options
  • Save qhwa/cb9d3851450bff3b705e to your computer and use it in GitHub Desktop.
Save qhwa/cb9d3851450bff3b705e 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)
}
@qhwa
Copy link
Author

qhwa commented Jul 24, 2022

Hi @masbur

I think other than a simple port-forwarding, what you want is a reverse proxy. In that case, there are some resources, such as this and this on top of reverseproxy.go.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment