aboutsummaryrefslogtreecommitdiff
path: root/network/protocol.go
diff options
context:
space:
mode:
Diffstat (limited to 'network/protocol.go')
-rw-r--r--network/protocol.go39
1 files changed, 39 insertions, 0 deletions
diff --git a/network/protocol.go b/network/protocol.go
new file mode 100644
index 0000000..e7c2536
--- /dev/null
+++ b/network/protocol.go
@@ -0,0 +1,39 @@
+package network
+
+import (
+ "net"
+ "strconv"
+ "strings"
+
+ "snix.ir/nanontp/engine"
+ "snix.ir/nanontp/getter"
+)
+
+var handler *Handler
+
+type Handler struct {
+ engine.UdpHandler
+}
+
+func GetHandler() *Handler {
+ if handler == nil {
+ handler = new(Handler)
+ }
+ return handler
+}
+
+var UDPRemoteAddr *net.UDPAddr
+
+func (p *Handler) DatagramReceived(data []byte, addr net.Addr) {
+ res, err := getter.Serve(data, addr)
+ if err == nil {
+ ip, port := spliteAddr(addr.String())
+ p.UdpWrite(string(res), ip, port)
+ }
+}
+func spliteAddr(addr string) (string, int) {
+ ip := strings.Split(addr, ":")[0]
+ port := strings.Split(addr, ":")[1]
+ p, _ := strconv.Atoi(port)
+ return ip, p
+}

Snix LLC Git Repository Holder Copyright(C) 2022 All Rights Reserved Email To Snix.IR