我一直在根据 RayWenderlich 的教程开发多人游戏,我的问题是我无法发送任何内容,我尝试NSString
了NSData
多种编码和解码(UTF8)等方式,但我总是得到类似于\204的东西(颠倒?)B(颠倒?)当我printf
在接收端做a时,但是当我做一个NSLog时说(null)。
这是.h的修改部分
typedef struct {
Message message;
const char * theTeam;
} MessageGameBegin;
这是让我发疯的.m代码:
(void)sendGameBegin:(NSString *) team {
NSString *strSQL = [[NSString alloc]init];
strSQL = team;
const char *bar = [strSQL cStringUsingEncoding:NSUTF8StringEncoding];
NSLog(@"HOOOOOE %@\n",[[NSString alloc] initWithCString:bar encoding:NSUTF8StringEncoding]);
MessageGameBegin message;
message.theTeam = bar;
message.message.messageType = kMessageTypeGameBegin;
NSData *data = [NSData dataWithBytes:&message length:sizeof(MessageGameBegin)];
[self sendData:data];
}
然后在接收中,
....else if (message->messageType == kMessageTypeGameBegin) {
MessageGameBegin * beginMessage = (MessageGameBegin *) [data bytes];
myDecoded = [[NSString alloc] initWithUTF8String:beginMessage->theTeam];
NSLog(@"NSLOOOOOOOG %@\n",myDecoded);
printf(" BEGING MESS %s\n",beginMessage->theTeam);
CCLOG(@"cl BEGING MESS %@\n",myDecoded);
[self setGameState:kGameStateActive];
self.enemy = [CCSprite spriteWithFile:myDecoded];
}
NSLog(@"HOOOOOE %@\n..
即使我是 100%,它甚至不会打印到控制台中,它的执行
返回NSLog(@"NSLOOOOOOOG %@\n"..
(null)
printf
给出了奇怪的人类不可读的输出,就像我在 CCSprite 行找不到文件之前显示的那样,因为它说它是 nil
我需要知道我在尝试发送NSSTrings时做错了什么,甚至是更好的方法。请感谢您的帮助,自从我是新手以来,我已经把头发扯掉了 2 天目标c
这是我要开始的教程,它有一个可以在第 2 部分底部下载的源代码 http://www.raywenderlich.com/3276/how-to-make-a-simple-multiplayer-game-with -game-center-tutorial-part-12
编辑: 最重要的是,整个目标是能够发送和接收数据中的字符串......我失败得很惨,所以不胜感激
@borrrden 这是我从你的帮助中得到的
发送:
MessageGameBegin message;
message.theTeam = bar;
message.message.messageType = kMessageTypeGameBegin;
//NSData *data = [NSData dataWithBytes:&message length:sizeof(MessageGameBegin)];
NSMutableData *data = [NSMutableData new];
[data appendBytes:&message length:sizeof(MessageGameBegin)];
[data appendBytes:message.theTeam length:strlen(message.theTeam)];
data.length = sizeof(MessageGameBegin) + strlen(message.theTeam);
[self sendData:data];
接收:
MessageGameBegin msg;
msg.theTeam = [[data subdataWithRange:NSMakeRange(sizeof(msg.message.messageType), data.length-sizeof(msg.message.messageType))] bytes];
NSLog(@"NSLOOOOOOOG %@\n",[[NSString alloc] initWithCString:msg.theTeam encoding:NSUTF8StringEncoding]);
返回看起来更好的东西(颠倒?)ІOarizona.png 好像我的数据长度错误或什么的..我希望它返回 arizona.png ,它总是关闭 3 个字符.. arizona 的 3 前面,所以在这种情况下,是否建议只修剪 3 还是有其他方法?