0

iOS アプリで GCDAsyncSocket を使用しようとしています。CocoaAsyncSocket の wiki で提供されているすべての手順に従っています。これが私がやっていることです:

 GCDAsyncSocket socket = [[GCDAsyncSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()];

    NSError *err = nil;
    if (![socket connectToHost:@"192.168.0.129" onPort:2811 error:&err]) // Asynchronous!
    {
        // If there was an error, it's likely something like "already connected" or "no delegate set"
        NSLog(@"I goofed: %@", err);
    }

    uint8_t buffer[2] = "1\n";

    NSData *data = [NSData dataWithBytes: &buffer length: sizeof(buffer)];
    [socket writeData:data withTimeout:10 tag:1];

私はすでにフレームワークの依存関係も含めました: Security & CFNetwork, そして私のクラスにそれぞれのデリゲートを含めました. それを使用するために他の構成が必要ですか?

この例を実行すると、次のエラーが発生します。

[ NSMallocBlockバイト]: 認識されないセレクターがインスタンス 0x6b7abe0 に送信されました 'NSInvalidArgumentException'、理由: '-[ NSMallocBlockバイト]: 認識されないセレクターがインスタンス 0x6b7abe0 に送信されました'

そして、それは GCDAsyncSocket.m のこの行で発生します

const uint8_t *buffer = (const uint8_t *)[currentWrite->buffer bytes] + currentWrite->bytesDone;
4

1 に答える 1

0

これを使用して、データを文字列からデータに変換してみてください

    +(NSData *) DataToHex: (NSString *) string
{
    string = [string stringByReplacingOccurrencesOfString:@" " withString:@""];
    int stringLength = string.length;
    NSMutableData *hexStringArray = [[NSMutableData alloc] init];
    [hexStringArray setLength:0];
    unsigned char whole_byte;

    char byte_chars[3] = {'\0','\0','\0'};
    int i;
    for (i=0; i < stringLength/2; i++) 
    {
        byte_chars[0] = [string characterAtIndex:i*2];
        byte_chars[1] = [string characterAtIndex:i*2+1];
        whole_byte = strtol(byte_chars, NULL, 16);
        [hexStringArray appendBytes:&whole_byte length:1]; 
    }                                                                       //this is auto way

    return hexStringArray;
}
于 2012-08-23T15:37:12.403 に答える