通过UDP

时间:2018-06-19 11:00:12

标签: ios udp cocoaasyncsocket

我正在开发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数据),其响应正确。

enter image description here

1 个答案:

答案 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;}