首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >发送动态数据

发送动态数据
EN

Stack Overflow用户
提问于 2012-07-09 22:03:37
回答 1查看 87关注 0票数 0

我为移动定义了一个结构

代码语言:javascript
复制
typedef struct {
    MsgType msgType;
    int newFallenStonesSize;
    char *newFallenStones;
} MsgMove;

然后像这样发送数据:

代码语言:javascript
复制
MsgMove message;
message.msgType = MsgTypeMove;     
message.newFallenStones = (char *)malloc(nrNewFallenStones*sizeof(char));
for (int i=0; i<nrNewFallenStones; i++) {
    message.newFallenStones[i]=newFallenStones[i];
}
message.newFallenStonesSize = nrNewFallenStones;

NSData *data = [NSData dataWithBytes:&message length:(2*sizeof(int)+message.newFallenStonesSize*sizeof(char))];          

[[KKGameKitHelper sharedGameKitHelper] sendDataToAllPlayers:data reliable:YES]; 

数据在发送时是正确的,但是当我像这样接收数据时:

代码语言:javascript
复制
else if (msg->msgType == MsgTypeMove)
{
    MsgMove *msgMove = (MsgMove *) [data bytes]; 
    for (int i=0; i<msgMove->newFallenStonesSize; i++) {
        NSLog(@"New Stone received:%i",msgMove->newFallenStones[i]);
    }
}

值已更改。例如1,6,3,我得到76,10598。

有人知道为什么会这样吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-09 23:30:08

主要问题是,您通过网络发送指向数据的指针,而不是实际的数据。当您为message.newFallenStones分配空间时,它将被设置为内存中某个明显随机的位置,该位置与您的MsgMove结构不相邻。然后将您的数据写入这个另一个内存位置。您打包要传输的是MsgMove结构(带有指向内存中其他位置的指针),外加内存中紧跟其后的任何随机字节。

处理这种情况的典型方法是将整个消息放在一起,并将数据写入消息的末尾。更像是:

代码语言:javascript
复制
typedef struct {
    MsgType msgType;
    int newFallenStonesSize;
    char newFallenStones;        // The first newFallenStones value
} MsgMove;

,然后与

代码语言:javascript
复制
MsgMove *message;
message = (MsgMove *)malloc(sizeof(MsgMove)+nrNewFallenStones-1);
message->msgType = MsgTypeMove;     
message->newFallenStonesSize = nrNewFallenStones;
char *newStones = &MsgMove->newFallenStones;
for (int i=0; i<nrNewFallenStones; i++) {
    newStones[i]=newFallenStones[i];
}

NSData *data = [NSData dataWithBytes:message length:(sizeof(MsgMove)+nrNewFallenStones-1)];          

[[KKGameKitHelper sharedGameKitHelper] sendDataToAllPlayers:data reliable:YES]; 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11396627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档