Esempio n. 1
0
        public CrestronClientSocket(string host, int port)
        {
            Debug.WriteLine("Client Create and Connect ({0}:{1}", host, port);

            if (host == null)
            {
                throw new ArgumentNullException("host");
            }

            if (port < IPEndPoint.MinPort || port > IPEndPoint.MaxPort)
            {
                throw new ArgumentOutOfRangeException("port");
            }

            var ipaddresses = DnsEx.GetHostAddresses(host);

            if (ipaddresses.Length == 0)
            {
                throw new SocketException(SocketError.HostNotFound);
            }

            _client = new TCPClient
            {
                AddressClientConnectedTo = ipaddresses[0].ToString(),
                PortNumber = port,
                Nagle      = true
            };

            SetupClient();
        }
Esempio n. 2
0
        private void AsyncConnectComplete(TCPClient client, object state)
        {
#if DEBUG
            if (_disposed != 0 || _client == null)
            {
                var ipaddrs        = DnsEx.GetHostAddresses(client.AddressClientConnectedTo);
                var remoteEndPoint = ipaddrs.Length == 0 ? new IPEndPoint(IPAddress.None, client.PortNumber) : new IPEndPoint(ipaddrs[0], client.PortNumber);

                Debug.WriteLine("Client ({0}): AsyncConnectComplete - client disposed [{1}]", remoteEndPoint, client.ClientStatus);
            }
            else
            {
                Debug.WriteLine("Client ({0}): AsyncConnectComplete", InternalRemoteEndPoint);
            }
#endif

            var acs = (AsyncConnectState)state;
            var iar = acs.AsyncResult;
            var cb  = acs.AsyncCallback;

            iar.IsCompleted = true;
            ((CEvent)iar.AsyncWaitHandle).Set();

            var scir = (SocketClientConnectAsyncResult)iar;
            scir.Status = client.ClientStatus;

            if (cb != null)
            {
                DoAsyncCallback(cb, iar);
            }
        }
Esempio n. 3
0
        public IAsyncResult BeginConnect(string host, int port, AsyncCallback callback, object state)
        {
            CheckDisposed();

            if (host == null)
            {
                throw new ArgumentNullException("host");
            }

            var addresses = DnsEx.GetHostAddresses(host);

            return(BeginConnect(addresses, port, callback, state));
        }
        public void Connect(string hostname, int port)
        {
            CheckDisposed();

            if (hostname == null)
            {
                throw new ArgumentNullException("hostname");
            }

            if (port < 0 || port > 65535)
            {
                throw new ArgumentOutOfRangeException("port");
            }

            var addresses = DnsEx.GetHostAddresses(hostname);

            if (addresses.Length == 0)
            {
                throw new SocketException(SocketError.HostNotFound);
            }

            Connect(addresses, port);
        }
        internal static bool CheckSameOrigin(Uri uri, string domain)
        {
            if (!CheckPublicRoots(domain))
            {
                return(false);
            }

            IPAddress address;

#if SSHARP
            if (IPAddressTryParser.IPAddressTryParse(domain, out address))
#else
            if (IPAddress.TryParse(domain, out address))
#endif
            {
                if (domain[0] == '.')
                {
                    return(false);
                }

#if SSHARP
                foreach (var ip in DnsEx.GetHostAddresses(uri.DnsSafeHost))
#else
                foreach (var ip in Dns.GetHostAddresses(uri.DnsSafeHost))
#endif
                {
                    if (address.Equals(ip))
                    {
                        return(true);
                    }
                }

                return(false);
            }

            return(CheckDomain(domain, uri.Host, false));
        }
        private static EndPointListener GetEPListener(string host, int port, HttpListener listener, bool secure)
        {
            IPAddress addr;

            if (host == "*")
            {
                addr = IPAddress.Any;
            }
#if SSHARP
            else if (IPAddressTryParser.IPAddressTryParse(host, out addr) == false)
#else
            else if (IPAddress.TryParse(host, out addr) == false)
#endif
            {
                try
                {
#if SSHARP
                    IPAddress[] addrs = DnsEx.GetHostAddresses(host);
                    if (addrs.Length != 0)
                    {
                        addr = addrs[0];
                    }
#else
                    IPHostEntry iphost = Dns.GetHostByName(host);
                    if (iphost != null)
                    {
                        addr = iphost.AddressList[0];
                    }
#endif
                    else
                    {
                        addr = IPAddress.Any;
                    }
                }
                catch
                {
                    addr = IPAddress.Any;
                }
            }
            Hashtable p = null;             // Dictionary<int, EndPointListener>
            if (ip_to_endpoints.ContainsKey(addr))
            {
                p = (Hashtable)ip_to_endpoints[addr];
            }
            else
            {
                p = new Hashtable();
                ip_to_endpoints[addr] = p;
            }

            EndPointListener epl = null;
            if (p.ContainsKey(port))
            {
                epl = (EndPointListener)p[port];
            }
            else
            {
                epl     = new EndPointListener(addr, port, secure);
                p[port] = epl;
            }

            return(epl);
        }