0

私は現在、サーバー クライアント プロジェクトに取り組んでおり、小さな tcp iPhone アプリ クライアントを作成しています。問題は、サーバーに次の形式の「パケット」を送信する必要があることです。

0x02+ 文字列 + 0x09+ int +0x03

問題は、0x02 を (16 進数として) 含める方法がわからないことです。最後に、すべてを NSData として送信する必要があります。

これが私がこれまでに得たものです。

unsigned char tag_start = 0x02;
unsigned char tag_end = 0x03;
unsigned char tag_split = 0x09;

NSString * stringToSend = [NSString stringWithFormat: @"%c%@%c%@%c%@%c%@%c", tag_start, oobject, tag_split, oid, tag_split, oaction, tag_split, ovalue, tag_end];

NSData * dataToSend = [[NSData alloc] initWithData:[stringToSend dataUsingEncoding:NSASCIIStringEncoding]];
4

3 に答える 3

0

この方法を試してください:

NSString *_command = @"\x02...\x09...\x03";

動作するはずです。

于 2012-07-16T14:40:10.000 に答える
0

同様の問題で、NSMutableData を使用し、appendBytes(STX、ETX、CSM を追加する) またはappendData(NSString) を使用して作業しました。

于 2012-07-16T14:18:01.520 に答える
0

仕組みは次のとおりです。

NSMutableData * mutableData = [[NSMutableData alloc] init];

// Appends STX
[mutableData appendData: [NSData dataWithBytes: "\x02" length:1]];

// Appends ETX
[mutableData appendData: [NSData dataWithBytes: "\x09" length:1]];

// Appends CSM
[mutableData appendData: [NSData dataWithBytes: "\x03" length:1]];

私の問題は、サーバーがメッセージに応答しなかったことですが、メッセージは正しいものでした。

于 2012-07-29T17:27:41.980 に答える