Пример #1
0
        public void run()
        {
            try
            {
                // Create tcp link
                server = new TcpListener(local, puerto);
                server.Start();

                Byte[] recepcion = new Byte[256];
                string data;
                System.Diagnostics.Debug.WriteLine("Esperando conexión...");
                cliente = server.AcceptTcpClient();
                System.Diagnostics.Debug.WriteLine("Conectado!");
                while (true)
                {
                    Stream s = cliente.GetStream();

                    data = null;

                    // Si la cola de envio esta vacia -> Esperar.
                    while (enviar.vacio())
                    {
                        System.Diagnostics.Debug.Print("Esperando Solicitudes!");
                        Thread.Sleep(1500);
                    }

                    // Procesar Solictiud (Enviar)
                    Solicitud sol = enviar.sacar();
                    data = sol.toString();
                    byte[] datab = System.Text.Encoding.ASCII.GetBytes(data);
                    s.Write(datab, 0, datab.Length);
                    System.Diagnostics.Debug.Print("Enviando: {0}", sol.toString());
                    // Esperar Recepción
                    byte[] datar = new byte[256];
                    s.Read(datar, 0, datar.Length);

                    // Procesar Resultado
                    data = System.Text.Encoding.ASCII.GetString(datar);
                    System.Diagnostics.Debug.Print("Recibido: {0}", data);

                    sol.res.parseResultado(data);
                    sol.completar();
                    Solicitud.numUsuarios -= 1;
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("Ha habido una excepción: {0}", e.Message);
            }
            finally
            {
                cliente.Close();
                server.Stop();
            }


            // Ir enviando solicitudes de enviar y poner recepciones en la cola circular recibir
        }