Example #1
0
 public static Aritmetica getInstancia()
 {
     if (instancia == null)
     {
         instancia = new Aritmetica();
     }
     return(instancia);
 }
        public static void StartListening()
        {
            // Bufer de Datos paralosdatos recibidos
            byte[] bytes = new Byte[1024];

            // Establece el punto deentrada final para el socket.
            // Dns.GetHostName devuelve el nombre del host donde correr la aplicacion
            IPHostEntry ipHostInfo = Dns.GetHostEntry(Dns.GetHostName());
            IPAddress   ipAddress  = ipHostInfo.AddressList[0];

            IPEndPoint localEndPoint = new IPEndPoint(IPAddress.Any, 11000);

            // Crea un Socket TCP/IP x.
            Socket listener = new Socket(IPAddress.Any.AddressFamily,
                                         SocketType.Stream, ProtocolType.Tcp);


            try
            {
                listener.Bind(localEndPoint);
                listener.Listen(10);

                // Inicia a escuchas miestras llegan conexiones.
                while (true)
                {
                    Console.WriteLine("Esperando por ceonexiones ...");
                    // el Programa es suspendido mientras espera oconexiones de entrada .
                    Socket handler = listener.Accept();
                    data = null;

                    // La conexion de entrada necesita ser procesada.

                    int bytesRec = handler.Receive(bytes);
                    data += Encoding.ASCII.GetString(bytes, 0, bytesRec);


                    // Muestra los datos en la consola .
                    Console.WriteLine("Texto recibido: {0}", data);
                    string[] mensajedescompuesto = data.Split(',');
                    string   operacion           = mensajedescompuesto[0];
                    double   a = double.Parse(mensajedescompuesto[1]);
                    double   b = double.Parse(mensajedescompuesto[2]);
                    double   c = 0;
                    switch (operacion)
                    {
                    case "sumar":
                        c = Aritmetica.getInstancia().suma(a, b);
                        break;

                    case "restar":
                        c = Aritmetica.getInstancia().resta(a, b);
                        break;

                    case "multiplicar":
                        c = Aritmetica.getInstancia().producto(a, b);
                        break;

                    case "dividir":
                        c = Aritmetica.getInstancia().division(a, b);
                        break;

                    case "potencia":
                        c = Aritmetica.getInstancia().potencia(a, b);
                        break;

                    case "raiz":
                        c = Aritmetica.getInstancia().raiz(a, b);
                        break;

                    default:
                        c = -1;
                        break;
                    }
                    // Prepara los datos para responder  al cliente.
                    byte[] msg = Encoding.ASCII.GetBytes(c.ToString());

                    handler.Send(msg);
                    handler.Shutdown(SocketShutdown.Both);
                    handler.Close();
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }

            Console.WriteLine("\nPresiones ENTER para continuar...");
            Console.Read();
        }