CFNetwork - 多个连接,相同的服务器?

时间:2013-05-19 16:39:48

标签: ios macos cfnetwork

我正在尝试使用CFNetwork框架创建到同一服务器的多个连接(例如https://www.myserver.com/)。当我尝试建立单个连接时,一切都按预期工作。一旦我尝试添加第二个并发连接,第二个连接就会挂起并等待第一个连接完成。

我尝试添加以下代码以使用唯一ID标记流(在打开流之前):

//self.httpReadStream is an NSInputStream
//self.requestID is an NSNumber<unsigned long long> that increments with every new request
CFReadStreamSetProperty((CFReadStreamRef)self.httpReadStream, CFSTR("StreamTag"), (CFNumberRef)self.requestID);

我从这里得到了这个想法:Apple Mailing List: Overlapping requests on multiple persistent connections?

不幸的是,这不起作用。

请帮忙。如何使用CFNetwork框架实现与同一服务器(主机/端口)的多个并发连接?请注意,出于多种复杂原因我无法使用NSURLConnection (在本文范围之外)。

UPDATE1:

澄清。如果我尝试使用CFNetwork API向同一服务器(https://www.myserver.com)发出两个并发请求(每个请求都有自己的线程和runloop - 由NSOperation提供),第一个请求连接并传输数据,但是第二个请求在第一个请求之后排队,直到第一个请求完成(NSOperationQueue设置为管理4个并发操作)。

两者都不会同时从同一台服务器传输数据。但是,只有当服务器全部不同(不同的主机名,https://www.myserver0.com/https://www.myserver1.com/

时,我才可以发出多个并发请求

0 个答案:

没有答案