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(); }
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); } }
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); }