blob: e7c2536325432c52bba6d9771547bdd38b28a1a8 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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
}
|