BitSharp.Network.Workers.ListenWorker.SubStart C# (CSharp) Method

SubStart() protected method

protected SubStart ( ) : void
return void
        protected override void SubStart()
        {
            DisposeSocket();

            try
            {
                switch (this.localClient.Type)
                {
                    case ChainType.MainNet:
                    case ChainType.TestNet3:
                        var externalIPAddress = Messaging.GetExternalIPAddress();
                        var localhost = Dns.GetHostEntry(Dns.GetHostName());

                        this.listenSocket = new Socket(externalIPAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
                        this.listenSocket.Bind(new IPEndPoint(localhost.AddressList.Where(x => x.AddressFamily == externalIPAddress.AddressFamily).First(), Messaging.Port));
                        break;

                    case ChainType.Regtest:
                        this.listenSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                        this.listenSocket.Bind(new IPEndPoint(IPAddress.Parse("127.0.0.1"), Messaging.Port));
                        break;
                }
                this.listenSocket.Listen(SERVER_BACKLOG);
            }
            catch (Exception ex)
            {
                logger.Error(ex, "Failed to start listener socket.");
                DisposeSocket();
                throw;
            }
        }