如何通过客户端的socketDataArrived方法正确接收数据

时间:2019-04-15 21:02:46

标签: sockets tcp omnet++ packet inet

我已经在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);的行上发生

您知道为什么会发生这种情况以及如何正确处理收到的数据吗?

非常感谢。

0 个答案:

没有答案