我正在寻找一个可以支持异步I/O的IMAP客户端库或解析器。最终目标是我可以有专门的线程来执行套接字I/O (通过poll()循环或类似的),并且可以在数据可用时将数据发送到等待的客户端/解析器。到目前为止,我所见过的所有代码/库(java.mail、Python、Thunderbird的C++ IMAP客户端、许多用C、C++编写的随机代码)似乎都遵循传统的阻塞、每个套接字一个线程的方法,这对我来说是行不通的。
我理想的客户机或库的行为与https://github.com/ry/http-parser非常相似,因为I/O行为不是由IMAP位决定的。相反,IMAP库将处理缓冲区/字符串,而调用者将管理I/O。
到目前为止,我看到的唯一可能是libcurl。但是,我不确定API是否会工作,并希望在走得太远或发明自己的解决方案之前先看看其他可能性。
我对任何编程语言中的库都持开放态度。
发布于 2011-04-22 19:17:39
Twisted (http://twistedmatrix.com/)有一个异步IMAP4客户端: twisted.mail.imap4.IMAP4Client
人们有时会说这个协议很难实现,所以实现质量可能是一个问题。已经不存在的Chandler项目使用了twisted IMAP4客户端,其源代码中包含这样的注释:“此功能将在不久的将来增强为更强大的IMAP客户端”。
发布于 2014-06-13 06:24:15
在这类事情上,我用node.js得到了很好的结果。如果监听大量打开的套接字,您将需要调整一些linux设置,以增加打开的文件描述器的数量限制,但它的效果很好。
https://stackoverflow.com/questions/5758785
复制相似问题