0

我目前正在开发一个服务器客户端项目,并且正在编写一个小的 tcp iPhone 应用程序客户端。问题是,我必须向服务器发送一个具有以下格式的“数据包”:

0x02+ 一个字符串 + 0x09+ 一个整数 +0x03

问题是,我不知道如何包含 0x02 (作为十六进制)。最后,我应该将所有内容作为 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

在类似的问题中,我使用了 NSMutableData,然后使用appendBytes(附加 STX、ETX、CSM)或appendData(NSString)。

于 2012-07-16T14:18:01.520 回答
0

试试这种方式:

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

它应该工作。

于 2012-07-16T14:40:10.000 回答
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 回答