gpt4 book ai didi

objective-c - 来自 URL 的 NSInputStream 似乎没有得到任何东西

转载 作者:行者123 更新时间:2023-12-03 17:51:33 25 4
gpt4 key购买 nike

我有以下代码,我知道它正在运行:

ReadDelegate * del = [[ReadDelegate alloc] init];
CFReadStreamRef readStream;
CFWriteStreamRef writeStream;

CFStreamCreatePairWithSocketToHost(NULL, (CFStringRef)(@"server.com"), port, &readStream, &writeStream);

NSInputStream * readSock = (__bridge_transfer NSInputStream*)readStream;

[readSock setDelegate:del];
[readSock scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];

NSOutputStream * writeSock = (__bridge_transfer NSOutputStream*)writeStream;
[writeSock scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
NSLog(@"Open socket");
[readSock open];
[writeSock open];

[writeSock write:(uint8_t*)("request\0\0\0") maxLength:10];


while (YES) {
//I'm skipping over inconsequential stuff
}
NSLog(@"finished reading");
[readSock close];
[writeSock close];

return [del getMessage];

我的 ReadDelegate 类声明如下 @interface ReadDelegate : NSObject <NSStreamDelegate>并包括 - (void)stream:(NSStream *)aStream handleEvent:(NSStreamEvent)eventCode 。该特定函数中只有一个 print 语句来查看它是否被调用过。事实并非如此。

我知道连接正在打开,因为我的服务器正在接收“request\0\0\0”消息并且服务器正在发送文件(我在其他环境中进行了测试,这些环境只能接收文件很好)。

但是,如上所述,ReadDelegate在开头 (del) 声明的对象永远不会收到 stream消息,甚至一次(表示流已打开或其他)。

为什么委托(delegate)没有被调用?

最佳答案

由于 while 循环,您的流似乎没有收到事件。

流中的每个新事件都可以在运行循环的新迭代中处理。但新的迭代无法开始,因为当前的迭代永远不会完成。

关于objective-c - 来自 URL 的 NSInputStream 似乎没有得到任何东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25299196/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com