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
我正在尝试制作一个如何登录的haskell示例,并发送接收一些硬编码的telnet行命令。到目前为止,我有类似的东西。我希望在屏幕上看到“login:”,但它没有显示任何内容?
答案 0 :(得分:1)
不要使用BlockBuffering。使用NoBuffering。黑线鳕非常清楚BlockBuffering Nothing提供依赖于实现的缓冲,而不是缓冲。因此,缓冲可能会妨碍hGetLine功能。