package stage1 import ( "fmt" "net" "net/netip" "runtime/debug" ) func RunClient(serverAddrStr string) { defer func() { if r := recover(); r != nil { fmt.Printf("%v", r) debug.PrintStack() } }() iface, err := openInterface(network, clientIP, netName) must(err) myAddr, err := net.ResolveUDPAddr("udp", fmt.Sprintf(":%d", port)) must(err) conn, err := net.ListenUDP("udp", myAddr) must(err) serverAddr, err := netip.ParseAddrPort(fmt.Sprintf("%s:%d", serverAddrStr, port)) must(err) go readFromIFace(iface, conn, serverIP, serverAddr) readFromConn(iface, conn) }