func (this *Server) Start() error { if this.accepting { return nil } tcpHub, err := internet.ListenTCP(this.meta.Address, this.meta.Port, this.handleConnection, this.meta.StreamSettings) if err != nil { log.Error("Shadowsocks: Failed to listen TCP on ", this.meta.Address, ":", this.meta.Port, ": ", err) return err } this.tcpHub = tcpHub if this.config.UDP { this.udpServer = udp.NewUDPServer(this.packetDispatcher) udpHub, err := udp.ListenUDP(this.meta.Address, this.meta.Port, this.handlerUDPPayload) if err != nil { log.Error("Shadowsocks: Failed to listen UDP on ", this.meta.Address, ":", this.meta.Port, ": ", err) return err } this.udpHub = udpHub } this.accepting = true return nil }
func (this *DokodemoDoor) ListenUDP() error { this.udpServer = udp.NewUDPServer(this.packetDispatcher) udpHub, err := udp.ListenUDP(this.meta.Address, this.meta.Port, this.handleUDPPackets) if err != nil { log.Error("Dokodemo failed to listen on ", this.meta.Address, ":", this.meta.Port, ": ", err) return err } this.udpMutex.Lock() this.udpHub = udpHub this.udpMutex.Unlock() return nil }
func NewListener(address v2net.Address, port v2net.Port) (*Listener, error) { l := &Listener{ block: NewSimpleAuthenticator(), sessions: make(map[string]*Connection), awaitingConns: make(chan *Connection, 64), localAddr: &net.UDPAddr{ IP: address.IP(), Port: int(port), }, running: true, } hub, err := udp.ListenUDP(address, port, l.OnReceive) if err != nil { return nil, err } l.hub = hub log.Info("KCP|Listener: listening on ", address, ":", port) return l, nil }