public UdpTrackerClient(Uri trackerURI, byte[] infoHash, TrackerClientID clientID, int customUpdateInterval = 0)
     : base(trackerURI, infoHash, clientID, customUpdateInterval)
 {
     if ((trackerURI.Scheme == "udp") && (trackerURI.Port == -1))
     {
         _trackerURI = new Uri("udp://" + trackerURI.Host + ":80" + trackerURI.AbsolutePath);
     }
 }
        protected TrackerClient(Uri trackerURI, byte[] infoHash, TrackerClientID clientID, int customUpdateInterval)
        {
            _trackerURI = trackerURI;

            _infoHash = infoHash;
            _clientID = clientID;

            _customUpdateInterval = customUpdateInterval;

            _peers = new List <IPEndPoint>();

            ScheduleUpdateNow();
        }
        public static TrackerClient Create(Uri trackerURI, byte[] infoHash, TrackerClientID clientID, int customUpdateInterval = 0)
        {
            switch (trackerURI.Scheme)
            {
            case "udp":
                return(new UdpTrackerClient(trackerURI, infoHash, clientID, customUpdateInterval));

            case "http":
                return(new HttpTrackerClient(trackerURI, infoHash, clientID, customUpdateInterval));

            default:
                throw new TrackerClientException("Tracker client only supports HTTP & UDP protocols.");
            }
        }
 public HttpTrackerClient(Uri trackerURI, byte[] infoHash, TrackerClientID clientID, int customUpdateInterval = 0)
     : base(trackerURI, infoHash, clientID, customUpdateInterval)
 {
 }