Базовый сетевой сокет haskell, пример 2 - PullRequest
0 голосов
/ 08 марта 2012
module Main where
import Network
import Network.Socket
import System.IO

main :: IO ()
main = withSocketsDo $ do
 addrInfos <- getAddrInfo Nothing (Just "localhost") (Just "23")
 s <- socket (addrFamily (head addrInfos)) Stream defaultProtocol
 connect s (addrAddress (head addrInfos))
 h <- socketToHandle s ReadWriteMode
 hSetBuffering h (BlockBuffering Nothing)

 l <- hGetLine h
 putStrLn l

Я пытаюсь создать на хаскеле пример того, как войти в систему и отправить несколько жестко запрограммированных команд линии telnet. Пока что у меня есть что-то подобное. Я ожидал увидеть «login:» на экране, но он ничего не показывает?

1 Ответ

1 голос
/ 08 марта 2012

Не используйте BlockBuffering Nothing.Используйте NoBuffering.В пикше очень ясно, что BlockBuffering Nothing дает буферизацию, зависящую от реализации, а не буферизацию.Так что эта буферизация может мешать работе функции hGetLine.

...