هل هناك أي شيء مثل 'getStreamsToHost "على جهاز اي فون الحقيقي؟
-
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);
لا تنتمي إلى StackOverflow