36 lines
705 B
Go
36 lines
705 B
Go
package stage3
|
|
|
|
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)
|
|
|
|
_, err = conn.WriteToUDPAddrPort([]byte{1, 2, 3, 4, 5, 6, 7, 8}, serverAddr)
|
|
must(err)
|
|
|
|
go readFromIFace(iface, conn, clientIP, serverIP, serverAddr)
|
|
readFromConn(iface, conn, serverIP)
|
|
}
|