2011-03-01 7 views
4

hGetLine을 통한 연결에서 입력을 기다리는 소켓 서버가 있습니다. 이것은 후행 줄 바꿈 문자로 메시지를 보낼 때 유용합니다. 내가 원하는 것은 개행 문자 또는 null 문자가 수신 될 때마다 버퍼에서 잡아내는 것입니다. 핸들의 버퍼 모드를 NoBuffering으로 설정해도 영향을 미치지 않습니다. \ n이 나타날 때까지 hGetLine은 계속 정지합니다. 개행 문자와 널 종료 문자를 모두 수용 할 수있는 간단한 방법이 있습니까?Haskell hGetLine 및 null 문자

답변

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

그래, 그게 내가 할 필요하게 될 겁니다 무슨 생각! –

+0

이 질문은 getStringUntil 함수가 종료 문자 목록 (이 경우 \ n 또는 null)을 취해서 종결자를 만날 때까지 읽는다고 생각하게 만듭니다. 이것은 java.util.Scanner와 비슷할 것입니다. –