gopunch is a go implementation of a peer-to-peer chat service built using UDP hole punching. This is a toy implementation that I put together to learn how hole punching works. Use at your own risk!
First, start a
punchserver on some machine with a public IP that has UDP port 1338 open:
Next, connect to the punchserver using your clients. Use the
-serverAddr flag to connect to your server’s public ip. Use the
-token flag to identify which two clients the server should connect.
Run the following on both clients. If it worked, you should be able to chat with the other side!
$ ./punchclient -serverAddr <server_ip>:1338 -token <shared_token> Sending STUN request to <server_ip>:1338 Connected to host at <other_client_ip>:<client_src_port> hi armaan hi peyton NAT is dead; there are no gods