您好我在Xcode 7 Beta3上使用dispatch_io_read
在swift 2中使用套接字。当预期的接收数据大小小于我指定的长度时,看起来读操作将保持在那里。例如,
如果我这样做
dispatch_io_read(channel!, 0, 1000, inputQueue!, myReadHandler)
并且来自服务器的数据少于1000个字节,myReadHandler
永远不会被调用。
要解决这个问题,我必须逐个读取字节,是否有更好的解决方案?
感谢。
答案 0 :(得分:1)
这可能有点晚了,但对于遇到同样问题的人来说 apple's documentation显示了......
" length参数表示应从I / O通道读取的字节数。通过import textsEn from 'texts.en.json';
import textsDe from 'texts.de.json';
import textsEs from 'texts.es.json';
.config($translateProvider => {
$translateProvider.translations('en', textsEn);
$translateProvider.translations('de', textsDe);
$translateProvider.translations('es', textsEs);
})
以保持读数直到遇到EOF(对于从基于磁盘的文件创建的通道,当读取超过物理文件的末尾时会发生这种情况)。"
因此,只需使用SIZE_MAX即可读取附加到文件描述符的所有可用数据。
不幸的是,由于Swift 3中的DispatchIO.read()错误,这似乎无法正常工作。