我已经在omnet ++服务器节点和客户端节点的模拟中创建了。客户端成功将我的自定义消息发送到服务器。服务器收到此消息并成功发送回响应消息。
客户端通过socketDataArrived()方法接收到一条消息,但是当我尝试将此消息从传入的cPacket类型转换为我的自定义消息类型时,发生分段错误错误:
Thread 1 "opp_run_dbg" received signal SIGSEGV, Segmentation fault.
0x00007ffff586c394 in __dynamic_cast () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
这是我投射消息的代码:
void TCPClientApp::socketDataArrived(int connId, void * yourPtr, cPacket * msg, bool urgent){
auto message = dynamic_cast<cMessage*>(msg);
if(message){
auto appmsg = dynamic_cast<GenericAppMsg*>(message);
....
}
问题在代码为auto appmsg = dynamic_cast<GenericAppMsg*>(message);
的行上发生
您知道为什么会发生这种情况以及如何正确处理收到的数据吗?
非常感谢。