这个急死了,想了好几天都没想明白, 希望各位前辈能指出问题所以
- C/C++ code
//以下为封装 传输数据的 结构体struct TDataS{ int type; int playerOrder; int param1;};//生成一个数据TDataS tds;tds.type=1;tds.param1=icard;TDataS* ptds;ptds=&tds;//发送数据SendTranfer(ptds); //其中函数SendTranfer的代码为 SendTranfer(TDataS* tds) { int iSend=m_socket.SendTo(tds,sizeof(&tds), clientPort,clientIP,0); }//此部分接收数据TDataS* tReceiveData;TDataS tempTds;tReceiveData=&tempTds;ReceiveTranfer(){ int iRecv=m_socket.ReceiveFrom(tReceiveData,sizeof(&tReceiveData),clientIP,clientPort,0);}
出现的问题是, 发送的数据 和 接收到的数据不一样.
例如 发送的数据是
- C/C++ code
TDataS tds;tds.type=1;tds.param1=5;TDataS* ptds;ptds=&tds;
接收到的数据是
- C/C++ code
tReceiveData->type=1;tReceiveData->param1=1;
在发送和接收的数据结构体中, param1 参数的值 一个是 5 , 一个是 1 ,
正常 情况下应该是一样的才对.
我实在找不到问题在哪里,
希望各位前辈可以告诉我
我一共只有这么多积分了,不好意思
------解决方案--------------------------------------------------------
sizeof(&tReceiveData),指针的指针?有问题吧。
------解决方案--------------------------------------------------------
你把
- C/C++ code
int iRecv=m_socket.ReceiveFrom(tReceiveData,sizeof(&tReceiveData),clientIP,clientPort,0);
------解决方案--------------------------------------------------------
还有你发送的时候
- C/C++ code
int iSend=m_socket.SendTo(tds,sizeof(&tds),
------解决方案--------------------------------------------------------
你只发送了4个字节