This repository contains a collection of Go experiments demonstrating NAT hole punching techniques. NAT hole punching is a method used to establish communication between devices behind different Network Address Translators (NATs).
NAT (Network Address Translation) is a common technology used in routers and firewalls to map multiple private IP addresses to a single public IP address. This can cause challenges when trying to establish direct communication between devices behind different NATs.
This project explores various NAT hole punching techniques and provides code samples and explanations for each.
GOOS=darwin GOARCH=amd64 go build -o client-osx *.go
/client c
/client s
/client c 192.168.0.11:3986 4545 ./client s