我正在开发iOS应用。我遇到了一个问题。
我正在尝试通过UDP将hexString数据发送到wifi摄像头,这将在获取正确数据时进行响应。我的代码如下所示。但是我无法通过我的wifi摄像头得到任何回复。 (我正在使用 https://github.com/robbiehanson/CocoaAsyncSocket)
NSString *sendMsg = @"6745000005000000000000000000000000000000000000001400000067450000140000000A";
NSData *bytes = [sendMsg dataUsingEncoding:NSUTF16BigEndianStringEncoding];
NSString *host = @"255.255.255.255";
[self.udpSocket sendData:bytes toHost:host port:ListenPort withTimeout:-1 tag:1];
此外,我尝试通过PacketSender发送我的数据(应用程序可以发送UDP数据),其响应正确。
答案 0 :(得分:0)
问题已解决。问题是在将NSString转换为NSData时。这是需要转换为NSData的十六进制字符串。下面是我的代码。
- (NSData *)dataFromHexString:(NSString *)hexString {
NSAssert((hexString.length > 0) && (hexString.length % 2 == 0), @"hexString.length mod 2 != 0");
NSMutableData *data = [[NSMutableData alloc] init];
for (NSUInteger i=0; i<hexString.length; i+=2) {
NSRange tempRange = NSMakeRange(i, 2);
NSString *tempStr = [hexString substringWithRange:tempRange];
NSScanner *scanner = [NSScanner scannerWithString:tempStr];
unsigned int tempIntValue;
[scanner scanHexInt:&tempIntValue];
[data appendBytes:&tempIntValue length:1];
}
return data;}