【问题标题】:how can i pass a NSArray over WiFi network?我如何通过 WiFi 网络传递 NSArray?
【发布时间】:2011-05-23 09:30:07
【问题描述】:

任何人都可以为我提供一种通过 wifi 网络发送 NSArray 对象的好方法。 我有一个代码可以通过 wifi 网络发送短信(字符串)。 我的代码是

发送

- (void) sendText:(NSString *)string {
    const uint8_t *message = (const uint8_t *)[string UTF8String];


    if (_outStream && [_outStream hasSpaceAvailable])
        if([_outStream write:message maxLength:strlen((char *)message)] == -1)
            NSLog(@"Failed sending data to peer");
}

接收方

- (void) stream:(NSStream *)stream handleEvent:(NSStreamEvent)eventCode
{   
    switch(eventCode) {

        case NSStreamEventHasBytesAvailable:
        {
            if (stream == _inStream) {
                // read it in
                unsigned int len = 0;
                len = [_inStream read:buf maxLength:buffSize];
                buf[len] = '\0';
                if(!len) {
                    if ([stream streamStatus] != NSStreamStatusAtEnd)
                        NSLog(@"Failed reading data from peer");
                } else {
                    NSString *message = [NSString stringWithUTF8String:(char *)buf];    }}

现在消息包含我收到的消息... 但是我需要通过 wifi 发送一个 NSArray 对象。任何人都可以帮我做这件事..

【问题讨论】:

    标签: iphone objective-c xcode networking nsarray


    【解决方案1】:

    您可以使用NSKeyedArchiverNSArray 中获取NSData 对象,NSData 对象只是二进制数据的包装器,因此您可以通过套接字发送它。收到数据后,首先将其转换回NSData 对象,然后使用NSKeyedUnarchiver 类来取回数组。

    【讨论】:

    • 如果您在数组中有自定义对象,只需让它们的类符合 NSCoding 并实现 NSCoding 方法。 :)
    【解决方案2】:

    您需要一种机制(协议),该机制(协议)将从发送端发送数组元素,并以与接收端接收相同的方式

    【讨论】:

      猜你喜欢
      • 2017-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多