简单的 udp server
func ListenAndServe(ctx context.Context, addr string, fn func([]byte, net.Addr, error)) error
func WritePacket(addr string, packet []byte) (int, error)
package main
import (
"context"
"fmt"
"net"
"time"
"github.com/o8x/jk/logger"
"github.com/o8x/jk/udp"
)
func main() {
ctx, cancel := context.WithCancel(context.Background())
go func() {
time.Sleep(time.Second * 5)
logger.Info("canceled")
cancel()
}()
err := udp.ListenAndServe(ctx, ":64458", func(bytes []byte, addr net.Addr, err error) {
if err != nil {
fmt.Println(err)
return
}
fmt.Println(addr.String(), string(bytes))
logger.Info("released")
})
if err != nil {
panic(err)
}
logger.Info("application exit")
}
运行它
> go run .
INFO[0000] udp server listen on udp://[::]:64458
127.0.0.1:53966 Hello
INFO[0002] released
INFO[0005] canceled
INFO[0005] udp server closed
INFO[0005] application exit