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); } }