private void OnPaqueteRecibido(object sender, PaqueteRecibidoEventArgs e) { Packet paquete = e.PaqueteRecibido; ProcesarPaquete(e.PaqueteRecibido); }
private void CapaDatos_PaqueteRecibido(object sender, PaqueteRecibidoEventArgs e) { Packet paquete = e.PaqueteRecibido; TCPSegment tcpSegment = paquete.Datos as TCPSegment; if (tcpSegment == null) return; EnviarNotifacionSegmentoRecibido(paquete); int hash = ControladorSesion.GetHash(paquete.IpDestino, paquete.IpOrigen, tcpSegment.DestinationPort, tcpSegment.SourcePort); if (tcpSegment.SYN_Flag && !tcpSegment.ACK_Flag) { ControladorSesionServer controladorServer = new ControladorSesionServer(paquete.IpDestino, paquete.IpOrigen, tcpSegment.DestinationPort, tcpSegment.SourcePort); _sesionesServer.Add(hash, controladorServer); controladorServer.ArchivoRecibido+=new EventHandler<EventArgs>(controladorServer_ArchivoRecibido); } if (_sesionesServer.ContainsKey(hash)) { ControladorSesionServer controladorServer = _sesionesServer[hash]; List<TCPSegment> segmentos = controladorServer.ProcesarSegmento(tcpSegment); EnviarSegmentos(segmentos, controladorServer); } if (_sesionesHost.ContainsKey(hash)) { ControladorSesionHost controladorHost = _sesionesHost[hash]; List<TCPSegment> segmentos = controladorHost.ProcesarSegmento(tcpSegment); EnviarSegmentos(segmentos, controladorHost); } }
private void ProcesarPaquete(Packet paquete) { if (PaqueteRecibido != null) { PaqueteRecibidoEventArgs evento = new PaqueteRecibidoEventArgs(paquete, BusinessLogic.Threads.ThreadManager.HoraActual); PaqueteRecibido(this, evento); } }