es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Protocolo desconocido: protocolId = 92, protocolName = CbdProto, servicio primitivo = SOLICITUD

Intento implementar un Protocolo de Capa de Red utilizando el módulo INET SensorNode. Extiendo correctamente el módulo simple NED, como sigue:

simple CbdProto extiende NetworkProtocolBase como INetworkProtocol
{
@class(inet::CbdProto);
}

Este protocolo se agrega a la lista de la clase de Protocolo INET (Protocol.cc) al extender esa clase:

En ProtocolNew.h

static const ProtocolNew CbdProto;

En ProtocolNew.cc

const ProtocolNew ProtocolNew::CbdProto("CbdProto","Protocolo de Red",ProtocolNew::NetworkLayer);

La clase C++ se configura de manera adecuada. Registro el protocolo en el método initialize():

void inet::CbdProto::initialize(int stage) {
if (stage == INITSTAGE_NETWORK_LAYER) {
registerProtocol(ProtocolNew::CbdProto, gate("transportOut"), gate("transportIn"));
}
}

El archivo .ini es como sigue:

**.hasIpv4 = false
**.hasIpv6 = false
**.hasGn = true
**.generic.typename = "SimpleNetworkLayer"
**.generic.np.typename = "CbdProto"

Pero sigo teniendo este error que no sé cómo solucionar:
<!> handlePacket(): Protocolo desconocido: protocolId = 92, protocolName = CbdProto, servicioPrimitivo = REQUEST, pathStartGate = WsnCbd.s[0].udp.ipOut, pathEndGate = WsnCbd.s[0].tn.in[0] -- en el módulo (inet::MessageDispatcher) WsnCbd.s[0].tn (id=18), t=0s, evento #6

Agradeceré su ayuda.

Gracias

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el protocolo no está registrado correctamente con el módulo MessageDispatcher. En el método initialize() de la clase CbdProto, se utiliza la función registerProtocol() para registrar el protocolo. Sin embargo, es posible que este método no esté siendo llamado en el momento adecuado de la inicialización de la simulación.

    Para asegurarse de que el método registerProtocol() se llame en el momento correcto, debe ser llamado durante el método initialize() en INITSTAGE_NETWORK_LAYER, que es el momento adecuado para registrar protocolos de Capa de Red.

    Si esto no resuelve el problema, también es posible que haya un problema con la configuración del propio framework INET, o un problema con la implementación del protocolo en sí.

    Es posible que se necesite una depuración adicional para determinar la causa exacta del error.

Comments are closed.