2011-03-01 25 views
4

我有一个套接字服务器,通过hGetLine等待来自连接的输入。当消息与尾随的换行符一起发送时,这非常有效。我希望在收到换行符或空字符时从缓冲区中获取 - 将句柄的缓冲区模式设置为NoBuffering不会影响此操作,hGetLine仍会挂起,直到出现\ n。有没有简单的方法来适应新行和空终止符?Haskell hGetLine和空字符

回答

1

您可以使用hGetChar或hGetBufSome旋转自己的解决方案。我认为你可以通过hGetBufSome更好地完成。但是,它看起来像hGetBufSome没有为Data.Text实现,所以你可能被困在System.IO中。

http://hackage.haskell.org/packages/archive/base/latest/doc/html/System-IO.html#v:hGetBufSome

好运

+0

是的,我认为这就是我最终不得不做 - 谢谢! – 2011-03-01 19:51:24

+0

这个问题让我想到一个getStringUntil函数,它接收一个终止字符(在本例中为\ n或null)的列表并读取,直到遇到任何终止符。这将有点像java.util.Scanner我想。 – 2011-03-01 23:46:24