首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >haskell network io hgetline

haskell network io hgetline
EN

Stack Overflow用户
提问于 2010-05-24 03:15:23
回答 1查看 394关注 0票数 2

我想读取句柄上的所有数据,然后阻塞等待更多数据。当流中有'\n‘字符时,listen1停止。listen2可以工作,并且可以通过模仿hGetNonBlocking的代码使其完全通用。做这件事最好的方法是什么?

代码语言:javascript
复制
import qualified Data.ByteString as B

loop = sequence_ . repeat

listen1 :: Handle -> TChan B.ByteString -> IO()
listen1 sock chan = do
  loop ( do
         s <- B.hGetLine sock
         atomically (writeTChan chan s)
       )

listen2 :: Handle -> TChan B.ByteString -> IO()
listen2 sock chan = do
  loop ( do
         s <- B.hGet sock 1
         s1 <- B.hGetNonBlocking sock 65000
         atomically (writeTChan chan (B.append s s1))
       )
EN

回答 1

Stack Overflow用户

发布于 2010-05-24 05:35:37

也许您没有意识到,或者我误解了您的目标,但是network-bytestring已经做了您想要的事情。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2893064

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档