区分通过WinSockC ++发送的两个值

问题描述

我有一个本地运行的C ++服务器和客户端,它们通过WinSock连接并且可以通信。

我需要在它们之间发送两种不同的更新(updateAupdateB)。

updateAchar*,但是updateB是对象指针。我无法访问updateB指向的对象(尽管我知道它是某种形式的字符串/字符-我只知道它的长度)。

当前,我以相同的方式在服务器和客户端之间发送这两个变量,但是可以根据情况以任何顺序发送它们:

iResult = send( this->ClientSocket,(char*)this->updateA,this->updatealength,0 );
//check for errors etc
iResult = send( this->ClientSocket,(char*)this->*updateB,this->updateBLength,0 );
//check for errors etc

但是到达后,需要对它们进行不同的处理,例如:

int iResult = recv( this->ConnectSocket,recvbuf,recvbuflen,0 );
if( iResult > 0 )
{
    if(is_updateA(recvbuf))
    {
        //do updateA things
    } elif (is_updateB(recvbuf)) {
        //do updateB things
    }
}

根据typeid( recvbuf ).name(),两个更新的类型均为char [1024](在发送期间都强制转换为char*,因为updateAchar const * __ptr64,并且updateBunsigned char * __ptr64)。

updateAupdateB之间进行区分的最干净的方法是什么?我已经考虑过在updateA的开头添加某种标记,但这并不是一个非常可靠的解决方案。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)