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行がファイルを見つけることができない前に示したように、人間が読めない奇妙な出力を提供します。
NSSTringsを送信するこの試みで、何が間違っているのか、またはそれを行うためのより良い方法を知る必要があります。 Objective 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文字ずれています..アリゾナの3文字前なので、この場合、3を削除することをお勧めしますか、それとも別の方法がありますか?