func (this *Shadowsocks) Listen(port v2net.Port) error { if this.accepting { if this.port == port { return nil } else { return proxy.ErrorAlreadyListening } } this.accepting = true tcpHub, err := hub.ListenTCP(port, this.handleConnection) if err != nil { log.Error("Shadowsocks: Failed to listen TCP on port ", port, ": ", err) return err } this.tcpHub = tcpHub if this.config.UDP { udpHub, err := hub.ListenUDP(port, this.handlerUDPPayload) if err != nil { log.Error("Shadowsocks: Failed to listen UDP on port ", port, ": ", err) } this.udpHub = udpHub this.udpServer = hub.NewUDPServer(this.packetDispatcher) } return nil }
func (this *DokodemoDoor) ListenUDP(port v2net.Port) error { udpHub, err := hub.ListenUDP(port, this.handleUDPPackets) if err != nil { log.Error("Dokodemo failed to listen on port ", port, ": ", err) return err } this.udpMutex.Lock() this.udpHub = udpHub this.udpServer = hub.NewUDPServer(this.packetDispatcher) this.udpMutex.Unlock() return nil }
func (this *SocksServer) ListenUDP(port v2net.Port) error { this.udpServer = hub.NewUDPServer(this.packetDispatcher) udpHub, err := hub.ListenUDP(port, this.handleUDPPayload) if err != nil { log.Error("Socks: Failed to listen on udp port ", port) return err } this.udpMutex.Lock() this.udpAddress = v2net.UDPDestination(this.config.Address, port) this.udpHub = udpHub this.udpMutex.Unlock() return nil }
func (this *SocksServer) ListenUDP(port v2net.Port) error { addr := &net.UDPAddr{ IP: net.IP{0, 0, 0, 0}, Port: int(port), Zone: "", } conn, err := net.ListenUDP("udp", addr) if err != nil { log.Error("Socks: failed to listen UDP on port ", port, ": ", err) return err } this.udpMutex.Lock() this.udpAddress = v2net.UDPDestination(this.config.Address, port) this.udpConn = conn this.udpServer = hub.NewUDPServer(this.packetDispatcher) this.udpMutex.Unlock() go this.AcceptPackets() return nil }