هل هناك أي شيء مثل 'getStreamsToHost "على جهاز اي فون الحقيقي؟

StackOverflow https://stackoverflow.com/questions/806116

  •  03-07-2019
  •  | 
  •  

سؤال

وأريد أن يكتب NSOutputStream إلى ملقم مع نموذج التعليمات البرمجية التفاح:


NSURL *website = [NSURL URLWithString:str_IP];
NSHost *host = [NSHost hostWithName:[website host]];
[NSStream getStreamsToHost:host port:1100 inputStream:nil outputStream:&oStream];
[oStream retain];
[oStream setDelegate:self];
[oStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[oStream open];

وهذه الرموز يعمل بشكل جيد على جهاز محاكاة اي فون، ولكن عندما بنائه إلى جهاز حقيقي. تحذيرين يطفو على السطح. المشكلة هي:

1) فئة NSHost لا ينتمي إلى مكتبة السراج فون

2) لم يتم العثور getStreamsToHost إما

وأي اقتراحات لطريقة بديلة أو الطبقة التي يمكن استخدامها على الجهاز الحقيقي؟

هل كانت مفيدة؟

المحلول

ومنذ CFWriteStream هو المجاني سد لNSOutputStream يمكنك استخدام CFStreamCreatePairWithSocketToHost للحصول على زوج تيار الخاصة بك:

CFReadStreamRef readStream = NULL;
CFWriteStreamRef writeStream = NULL;
CFStreamCreatePairWithSocketToHost(kCFAllocatorDefault, (CFStringRef)host, port, &readStream, &writeStream);
if (readStream && writeStream) {
    CFReadStreamSetProperty(readStream, kCFStreamPropertyShouldCloseNativeSocket, kCFBooleanTrue);
    CFWriteStreamSetProperty(writeStream, kCFStreamPropertyShouldCloseNativeSocket, kCFBooleanTrue);

    inputStream = (NSInputStream *)readStream;
    [inputStream retain];
    [inputStream setDelegate:self];
    [inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
    [inputStream open];

    outputStream = (NSOutputStream *)writeStream;
    [outputStream retain];
    [outputStream setDelegate:self];
    [outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
    [outputStream open];
}

if (readStream)
    CFRelease(readStream);

if (writeStream)
    CFRelease(writeStream);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top