TCP funziona in GHCi, bufferizzato fino all'uscita del programma nel programma compilato con Leksah

StackOverflow https://stackoverflow.com/questions/5890054

Domanda

Ho scritto questo semplice client prototipo per inviare comandi a un server che sto sviluppando.Funziona perfettamente in GHCi, ma la versione compilata bufferizza tutto ciò che viene digitato fino a quando non digito "quit" e il programma esce.A quel punto viene inviato tutto il testo di input.

Cosa sto facendo di sbagliato?E perché è diverso quando viene compilato?

Aggiorna: funziona come previsto se compilato con ghc Main.hs.Il problema si verifica quando viene compilato con Leksah tramite Package -> Build.Qualcuno sa come ottenere la riga di comando che Leksah sta usando?

Informazioni di sistema: OSX 10.6, GHC 7.0.3, rete 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
È stato utile?

Soluzione 2

Hmm, sembra che Leksah non stesse realizzando l'app quando pensavo che lo fosse.Devo aver eseguito il vecchio codice senza la chiamata hSetBuffering.Un clean & rebuild ha risolto il problema.Ci scusiamo e grazie a tutti per il vostro tempo e aiuto.

modifica: Trovato: nel caso in cui qualcun altro si confonda, quando si fa clic su package-> build, Leksah non genera un'app compilata se è in modalità debug / ghci.

Altri suggerimenti

Leksah usa "cabal build", le versioni precedenti "runhaskell Setup build".

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top