| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 | 
							- using System;
 
- using System.Net;
 
- namespace SocketHttpListener.Net
 
- {
 
-     internal sealed class ListenerPrefix
 
-     {
 
-         private string _original;
 
-         private string _host;
 
-         private ushort _port;
 
-         private string _path;
 
-         private bool _secure;
 
-         private IPAddress[] _addresses;
 
-         internal HttpListener _listener;
 
-         public ListenerPrefix(string prefix)
 
-         {
 
-             _original = prefix;
 
-             Parse(prefix);
 
-         }
 
-         public override string ToString()
 
-         {
 
-             return _original;
 
-         }
 
-         public IPAddress[] Addresses
 
-         {
 
-             get => _addresses;
 
-             set => _addresses = value;
 
-         }
 
-         public bool Secure => _secure;
 
-         public string Host => _host;
 
-         public int Port => _port;
 
-         public string Path => _path;
 
-         // Equals and GetHashCode are required to detect duplicates in HttpListenerPrefixCollection.
 
-         public override bool Equals(object o)
 
-         {
 
-             var other = o as ListenerPrefix;
 
-             if (other == null)
 
-                 return false;
 
-             return (_original == other._original);
 
-         }
 
-         public override int GetHashCode()
 
-         {
 
-             return _original.GetHashCode();
 
-         }
 
-         private void Parse(string uri)
 
-         {
 
-             ushort default_port = 80;
 
-             if (uri.StartsWith("https://"))
 
-             {
 
-                 default_port = 443;
 
-                 _secure = true;
 
-             }
 
-             int length = uri.Length;
 
-             int start_host = uri.IndexOf(':') + 3;
 
-             if (start_host >= length)
 
-                 throw new ArgumentException("net_listener_host");
 
-             int colon = uri.IndexOf(':', start_host, length - start_host);
 
-             int root;
 
-             if (colon > 0)
 
-             {
 
-                 _host = uri.Substring(start_host, colon - start_host);
 
-                 root = uri.IndexOf('/', colon, length - colon);
 
-                 _port = (ushort)int.Parse(uri.Substring(colon + 1, root - colon - 1));
 
-                 _path = uri.Substring(root);
 
-             }
 
-             else
 
-             {
 
-                 root = uri.IndexOf('/', start_host, length - start_host);
 
-                 _host = uri.Substring(start_host, root - start_host);
 
-                 _port = default_port;
 
-                 _path = uri.Substring(root);
 
-             }
 
-             if (_path.Length != 1)
 
-                 _path = _path.Substring(0, _path.Length - 1);
 
-         }
 
-     }
 
- }
 
 
  |