我目前正在研究服务器客户端项目,我正在编写一个小的tcp iPhone应用程序客户端。问题是,我要向服务器发送一个包含以下格式的“数据包”:
0x02
+一个字符串+ 0x09
+一个int + 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]];
答案 0 :(得分:0)
我在类似的问题中使用了NSMutableData,然后使用appendBytes
(附加STX,ETX,CSM)或appendData
(NSString)。
答案 1 :(得分:0)
尝试这种方式:
NSString *_command = @"\x02...\x09...\x03";
应该有效。
答案 2 :(得分: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]];
我的问题是服务器没有响应我的消息,但消息是正确的。