Пример #1
0
 static void SendFile(string filename, string destination)
 {
     int i = 0;
     while (i < m_clients.Count)
     {
         DebuggerClient client = m_clients[i];
         if (!client.Connected)
         {
             m_clients.RemoveAt(i);
             continue;
         }
         client.SendFile(filename, destination);
         i++;
     }
 }
Пример #2
0
 static void SendBack(string str, bool sendLength = true)
 {
     int i = 0;
     while (i < m_clients.Count)
     {
         DebuggerClient client = m_clients[i];
         if (!client.Connected)
         {
             m_clients.RemoveAt(i);
             continue;
         }
         client.SendBack(str, sendLength);
         i++;
     }
 }
Пример #3
0
        static void StartServerBlocked(Object threadContext)
        {
            if (s_serverStarted)
            {
                return;
            }
            s_serverStarted = true;
            DebuggerAttached = true;

            Debugger.OnResult += SendBack;
            Debugger.OnSendFile += SendFile;
            ThreadPool.QueueUserWorkItem(StartProcessing, null);

            while (DebuggerAttached)
            {
                Console.Write("Waiting for a connection... ");

                try
                {
                    // Perform a blocking call to accept requests.
                    TcpClient socket = s_server.AcceptTcpClient();
                    DebuggerClient client = new DebuggerClient();
                    m_clients.Add(client);

                    ThreadPool.QueueUserWorkItem(o => client.RunClient(socket));
                }
                catch (Exception exc)
                {
                    string err = string.Format("Exception running server: {0}", exc.Message);
                    Console.Write(err);
                }

                Thread.Sleep(1000);
            }

            Console.Write("Stopped listening for requests");
            s_serverStarted = false;
        }