请帮助我,即时疯狂。 我需要创build一个NSInputStream所以我可以通过wifi从相机读取实时预览。 liveViewStream是一个NSInputStream -Instance-Variable,在我的实现中声明如下: @implementation MKSonyCamHandler{ NSInputStream *liveViewStream; } liveViewURL是一个有效的URL,当我连接到摄像机的networking时,我可以在浏览器中打开它(尽pipe我不认为这有什么区别)。 我已经检查了它的存在,不是零,并保持我期望的价值。 但是当我这样做: liveViewStream = [[NSInputStream alloc] initWithURL:liveViewURL]; DLog(@"%@", liveViewStream); alloc-init命令后面的DLog每次都会logging“(null)”,如果我知道原因的话,那么该死的就不该说了。 有没有人遇到过这个? 我在这里丢失了明显的东西吗? 这是我第一次与NSStreams ,有没有一个常见的陷阱可能是原因? 该文档明确指出,-initWithURL: Creates and returns an initialized NSInputStream object that reads data from the file at a given URL. 有任何想法吗? 我开始觉得这里真的很愚蠢。 编辑:我正在使用ARC。
我试图在一个TCP连接的应用程序,我得到一个NSStreamEvent“4”handleEvent。 我究竟做错了什么? 我的代码就像, -(void) initNetworkCommunication { CFReadStreamRef readStream; CFWriteStreamRef writeStream; CFStreamCreatePairWithSocketToHost(NULL, (CFStringRef)@"localhost", 80, &readStream, &writeStream); inputStream = (__bridge_transfer NSInputStream *)readStream; outputStream = (__bridge_transfer NSOutputStream *)writeStream; [inputStream setDelegate:self]; [outputStream setDelegate:self]; [inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; [outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; [inputStream open]; [outputStream open]; } – (IBAction)didTapButton:(id)sender { NSString *response = inputTextField.text; NSLog(@"%@", response); NSData *data = [[NSData […]
我正在开发一个基于套接字的客户端服务器应用程序。 当运行iOS 4,4.2.1,4.3.2等中的任何iDevice的用户在连接到服务器时单击lockingbutton时,连接保持活动状态。 但是,当我点击运行iOS 5的任何设备上的lockingbutton时,连接立即被销毁,并且在从locking屏幕返回到应用程序时,我将看到在调用NSStreamEventErrorOccurred方法时调用的NSAlertView。 我有几个客户端testing应用程序,他们每个人与iOS 5有这个完全相同的问题 – 无论设备(iPod 2G,iPod 4G,iPhone 3GS,iPhone 4)。 iOS 5设备处理锁的方式有没有改变? 我怎样才能解决这个问题? 编辑: 我应该提到这个项目是从Xcode 4(iOS 4 sdk)开始的,现在正在Xcode 4.2中使用。不知道这是否重要。
我有一个应用程序连接到另一个线程上使用NSStream服务器。 如果用户决定退出,应用程序也会closures连接。 问题是,我永远不能成功地closuresstream或线程在用户断开连接。 以下是我的代码示例,介绍了如何为networking创build线程并尝试closuresstream: + (NSThread*)networkThread { static NSThread *networkThread = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ networkThread = [[NSThread alloc] initWithTarget:self selector:@selector(networkThreadMain:) object:nil]; [networkThread start]; }); return networkThread; } + (void)networkThreadMain:(id)sender { while (YES) { @autoreleasepool { [[NSRunLoop currentRunLoop] run]; } } } – (void)scheduleInThread:(id)sender { [inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes]; [inputStream open]; } – […]
我一直试图通过蓝牙2.1使用RN-42从设备读取数据。 该设备与iPhone或iPad Mini配对,数据瞬间stream过,但iOS和BT模块在几秒钟内断开(不成对)。 该设备正在输出数据5-10kB / s,在蓝牙的规范内。 我还注意到,当我运行函数NSInputStream,[NSInputStream read:maxLength:],返回的字节数始终是158或更less。 应用程序和硬件不会崩溃,但蓝牙只是不配对。 即使在断开连接之后,设备仍然向RN42发送数据,这减less了在电子设备方面出现问题的可能性。 这个设置在Android设备上也可以很好地工作。 我可以stream数据没有任何断开或崩溃。 我试过的东西… 接下来是Apple提供的外部附件示例EADemo。 纯粹使用运行循环而不是轮询。 按照这篇文章的build议把stream放到后台线程上。 删除所有NSLogs来帮助提高性能。 以debugging和发布模式编译。 有一件事是减慢数据传输速度(即低于5kB / s),这样iOS和BT模块就可以在断开连接之前保持连接和传输数据。 #define EAD_INPUT_BUFFER_SIZE 1024 /** * Stream delegate */ – (void)stream:(NSStream *)aStream handleEvent:(NSStreamEvent)eventCode { switch (eventCode) { [… other cases …] case NSStreamEventHasBytesAvailable: { uint8_t buf[EAD_INPUT_BUFFER_SIZE]; unsigned int len = 0; len = [(NSInputStream *)aStream […]
我注意到,用于iOS的剪贴板应用程序Pasteboard可以在后台运行Bonjour服务。 我不知道他们是如何实现的,所以我在互联网上search,然后发现它在后台播放一个沉默的声音文件。 但现在不是这样,因为我看不到iPodpipe理屏幕上的应用程序图标。 他们怎么能这样做? 有任何想法吗? 先谢谢你。 凯。
我正在使用MPCF创build一个多人游戏。 您可以使用iPhone控制iPad上的太空船。 我正在经历不同程度的延迟和延迟以及随机时间和间隔的缓冲/暂停,现在已经登陆Apple Technical Q&A NW26论文,讨论禁用Naglealgorithm。 我试了一下,但我的程序不断崩溃,我不明白为什么。 它似乎是CFWriteStreamCopyProperty总是返回NULL。 – (void)stream:(NSStream *)stream handleEvent:(NSStreamEvent)eventCode { switch (eventCode) { case NSStreamEventOpenCompleted: // Trying to get a handle to the native socket CFSocketNativeHandle rawsock; // This always return NULL CFDataRef socketData = CFWriteStreamCopyProperty((__bridge CFWriteStreamRef)(stream), kCFStreamPropertySocketNativeHandle); // And this row always crash (coz of socketData being NULL i guess) CFDataGetBytes(socketData, […]
我想从NSInputStream播放pcm数据。 任何人都可以提供正确的方法或代码来做到这一点。 我用下面的代码得到了StreamHasData事件中的audio。 uint8_t bytes[self.audioStreamReadMaxLength]; UInt32 length = [audioStream readData:bytes maxLength:self.audioStreamReadMaxLength]; 现在我怎么能在iPhone中播放字节audio数据?
我已经写了这个代码来设置一个服务器的stream: -(void)streamOpenWithIp:(NSString *)ip withPortNumber:(int)portNumber; { CFReadStreamRef readStream; CFWriteStreamRef writeStream; CFStreamCreatePairWithSocketToHost(kCFAllocatorDefault, (__bridge CFStringRef)ip, portNumber, &readStream, &writeStream); if(readStream && writeStream) { CFReadStreamSetProperty(readStream, kCFStreamPropertyShouldCloseNativeSocket, kCFBooleanTrue); CFWriteStreamSetProperty(writeStream, kCFStreamPropertyShouldCloseNativeSocket, kCFBooleanTrue); //Setup inpustream inputStream = (__bridge NSInputStream *)readStream; [inputStream setDelegate:self]; [inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; [inputStream open]; //Setup outputstream outputStream = (__bridge NSOutputStream *)writeStream; [outputStream setDelegate:self]; [outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; [outputStream open]; […]