Exemplo n.º 1
0
        private void LectorDePaquetes()
        {
            UdpClient  receivingUdpClient = new UdpClient(4445);
            IPEndPoint RemoteIpEndPoint   = new IPEndPoint(IPAddress.Any, 0);

            while (true)
            {
                try
                {
                    Byte[] receiveBytes = receivingUdpClient.Receive(ref RemoteIpEndPoint);
                    string returnData   = Encoding.ASCII.GetString(receiveBytes);
                    ultimoPaquete = new Paquete(returnData);
                    Console.WriteLine(returnData);
                    switch (ultimoPaquete.LeerPaquete())
                    {
                    case Paquete.PaquetesRespuesta.INICIO_COMUNICACION:
                    {
                        PackageEnEjecucion = ultimoPaquete.ObtenerContenido().ElementAt(0);
                        OnComunicationStarted?.Invoke(this, new OnComunicationStartedEventArgs(PackageEnEjecucion));
                        break;
                    }

                    case Paquete.PaquetesRespuesta.CONFIRMAR_INICIO_COMUNICACION:
                    {
                        Console.WriteLine("Comunicacion confirmada a través de la IP:" + ultimoPaquete.GetIp());
                        LocalIPAddress = ultimoPaquete.GetIp();
                        EsperandoConfirmacionDelEmulador = false;
                        break;
                    }

                    case Paquete.PaquetesRespuesta.RTA_SOLICITUD_PACKAGE_EN_EJECUCION:
                    {
                        PackageEnEjecucion = ultimoPaquete.ObtenerContenido().ElementAt(0);
                        if (EsperandoRespuesta == true)
                        {
                            EsperandoRespuesta = false;
                        }
                        break;
                    }

                    case Paquete.PaquetesRespuesta.EVENTO_CAMBIO_PACKAGE_EN_EJECUCION:
                    {
                        if (!ultimoPaquete.ObtenerContenido().Contains("null"))
                        {
                            OnPackageChange?.Invoke(this, new OnPackageChangedEventArgs(ultimoPaquete.ObtenerContenido().ElementAt(0), ultimoPaquete.ObtenerContenido().ElementAt(1)));
                            PackageEnEjecucion = ultimoPaquete.ObtenerContenido().ElementAt(1);
                        }
                        break;
                    }

                    case Paquete.PaquetesRespuesta.RTA_SOLICITUD_CONFIRMADA:
                    {
                        RespuestaSolicitud = true;
                        if (EsperandoRespuesta == true)
                        {
                            EsperandoRespuesta = false;
                        }
                        break;
                    }

                    case Paquete.PaquetesRespuesta.RTA_SOLICITUD_RECHAZADA:
                    {
                        RespuestaSolicitud = false;
                        if (EsperandoRespuesta == true)
                        {
                            EsperandoRespuesta = false;
                        }
                        break;
                    }

                    case Paquete.PaquetesRespuesta.FIN_COMUNICACION:
                    {
                        OnComunicationFinished?.Invoke(this, null);
                        break;
                    }
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.ToString());
                }
                Thread.Sleep(100);
            }
        }