Haskellで簡単なサーバーを書いて嵌ったこと。
クライアントでデータを送る際、hFlushしないと送り終わる前に接続が切れてしまう。
import Network import System.IO main :: IO () main = withSocketsDo $ do hSetBuffering stdout NoBuffering server `catch` (const $ putStrLn "Exception caught.") putStrLn "Connection closed." server :: IO () server = do sock <- listenOn (PortNumber 31400) (h, _, _) <- accept sock hPutStr h "Hello" hFlush h -- ないと送信が終わる前に接続切れる。 sClose sock
参考:
Simple Servers - HaskellWiki