開発中のサーバーにコマンドを送信するために、この単純なプロトタイプクライアントを作成しました。GHCiで完全に動作しますが、コンパイルされたバージョンは、「quit」と入力してプログラムが終了するまで、入力されたすべてのものをバッファリングします。その時点で、すべての入力テキストが送信されます。
私は何が間違っているのですか?そして、コンパイルするとなぜ違うのですか?
更新:を使用してコンパイルすると、期待どおりに機能しghc Main.hs
ます。この問題は、[パッケージ]->[ビルド]を介してLeksahでコンパイルすると発生します。Leksahが使用しているコマンドラインを取得する方法を知っている人はいますか?
システム情報:OSX 10.6、GHC 7.0.3、ネットワーク2.3.0.2
module Main (
main
) where
import System.IO
import Network
main = do
hServer <- connectTo "localhost" (PortNumber 7000)
hSetBuffering hServer NoBuffering
loop hServer
hClose hServer
where loop :: Handle -> IO ()
loop hServer = do
s <- getLine
hPutStrLn hServer s
case s of "quit" -> return ()
otherwise -> loop hServer