Skip to content

Instantly share code, notes, and snippets.

@armon
Created February 10, 2014 23:33
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 armon/8926419 to your computer and use it in GitHub Desktop.
Save armon/8926419 to your computer and use it in GitHub Desktop.
package main
import (
"fmt"
"net"
"os"
"time"
)
const udpAddr = "127.0.0.1:10000"
func main() {
addr, err := net.ResolveUDPAddr("udp", udpAddr)
if err != nil {
panic(err)
}
udpConn, err := net.ListenUDP("udp", addr)
if err != nil {
fmt.Printf("Failed to start UDP listener. Err: %s\n", err)
os.Exit(1)
}
go send(udpConn)
go recv(udpConn)
select {}
}
func send(udpConn *net.UDPConn) {
addr, err := net.ResolveUDPAddr("udp", udpAddr)
if err != nil {
panic(err)
}
for {
_, err := udpConn.WriteTo([]byte("ping"), addr)
if err != nil {
fmt.Printf("[ERR] Error sending UDP packet: %s\n", err)
}
time.Sleep(time.Second)
}
}
func recv(udpConn *net.UDPConn) {
buf := make([]byte, 64*1024)
for {
n, addr, err := udpConn.ReadFrom(buf)
if err != nil {
fmt.Printf("[ERR] Error reading UDP packet: %s\n", err)
}
fmt.Printf("[INFO] Packet from %v %d\n", addr, n)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment