TCP funciona em GHCi, armazenado em buffer até a saída do programa no programa compilado com Leksah

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

Pergunta

Escrevi este cliente de protótipo simples para enviar comandos a um servidor que estou desenvolvendo.Funciona perfeitamente rodando em GHCi, mas a versão compilada armazena tudo que foi digitado até que eu digite "quit" e o programa saia.Nesse ponto, todo o texto de entrada é enviado.

O que estou fazendo de errado?E por que é diferente quando compilado?

Atualização: funciona conforme o esperado se compilado com ghc Main.hs.O problema acontece quando compilado com Leksah via Package -> Build.Alguém sabe como obter a linha de comando que Leksah está usando?

Informações do sistema: OSX 10.6, GHC 7.0.3, rede 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
Foi útil?

Solução 2

Hmm, parece que Leksah não estava realmente construindo o aplicativo quando eu pensei que estava.Devo ter executado um código antigo sem a chamada hSetBuffering.Uma limpeza e reconstrução resolveu tudo.Pedimos desculpas e obrigado a todos por seu tempo e ajuda.

editar: Encontrado - no caso de alguém ficar confuso com isso, quando package-> build é clicado, o Leksah não gera um aplicativo compilado se estiver no modo debug / ghci.

Outras dicas

Leksah usa "compilação cabal", versões anteriores "compilação de instalação do runhaskell".

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top