问题描述
我有一个本地运行的C ++服务器和客户端,它们通过WinSock连接并且可以通信。
我需要在它们之间发送两种不同的更新(updateA
和updateB
)。
updateA
是char*
,但是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*
,因为updateA
是char const * __ptr64
,并且updateB
是unsigned char * __ptr64
)。
在updateA
和updateB
之间进行区分的最干净的方法是什么?我已经考虑过在updateA
的开头添加某种标记,但这并不是一个非常可靠的解决方案。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)