public async ValueTask <IQuickListeningSocket> GetListeningTcpSocketAsync(string hostNameOrAddresss, int bindingPort, bool overideAsLocal = false, bool verbatimAddress = false) { var key = GetSocketKey(ProtocolType.Tcp, SocketType.Stream, hostNameOrAddresss, bindingPort); if (ListeningSockets.ContainsKey(key)) { return(ListeningSockets[key]); } else { var dnsEntry = await DnsCaching .GetDnsEntryAsync(hostNameOrAddresss, bindingPort, overideAsLocal, verbatimAddress) .ConfigureAwait(false); var quickListeningSocket = new QuickListeningSocket { Socket = new Socket(dnsEntry.PrimaryAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp), DnsEntry = dnsEntry, }; ListeningSockets[key] = quickListeningSocket; return(quickListeningSocket); } }
public QuickSocketFactory() { DnsCaching = new DnsCaching(TimeSpan.FromHours(CachingExpiryInHours)); Sockets = new ConcurrentDictionary <string, QuickSocket>(); ListeningSockets = new ConcurrentDictionary <string, QuickListeningSocket>(); }