Example #1
0
 private void Run()
 {
     try
     {
         while (_isRunning)
         {
             TcpClient clientSocket = _serverSocket.AcceptTcpClient();
             var       remote       = new IrisRemoteClientNode(clientSocket);
             remote.Connect(GetServerConfig());
         }
     }
     catch (Exception ex)
     {
         if (_isRunning)
         {
             OnServerException?.BeginInvoke(ex, null, null);
         }
     }
     finally
     {
         if (_isRunning)
         {
             Stop();
         }
     }
 }
        public static void Start()
        {
            if (Available)
            {
                return;
            }

            if (_server == null)
            {
                _server = new RenderServer(ServerPort, BroadcastPort, false);
                _server.OnServerException    += (a, b) => OnServerException?.Invoke(a, b);
                _server.OnBroadcastException += (a, b) => OnBroadcastException?.Invoke(a, b);
                _server.OnServerDiscovered   += (a, b, c) => OnDiscoveredServer?.Invoke(a, b, c);
            }
            _server.Start();
        }
        /// <summary>
        /// Starts the Listener background thread for rendering
        /// </summary>
        private void StartRenderListener()
        {
            _listenerThread = new Thread(async() =>
            {
                try
                {
                    Listener = new TcpListener(IPAddress.Any, Port);
                    Listener.Start();
                    while (Active)
                    {
                        TcpClient client = await Listener.AcceptTcpClientAsync();

                        RenderServerClientTcp rClient = new RenderServerClientTcp(Blender, client);
                        lock (Clients)
                            Clients.Add(rClient);
                        rClient.OnDisconnect += (client) =>
                        {
                            lock (Clients)
                                Clients.Remove(client);
                        };

                        Thread.Sleep(100);
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine("TCP Exception:" + ex.Message);
                    OnServerException?.Invoke(this, ex);
                }
                finally
                {
                    Active = false;
                }
            });
            _listenerThread.Start();
        }