为什么我从简单的Haskell网络代码中获得"hPutChar:资源消失"错误?

Ana*_*Ana 5 sockets macos haskell

我今天尝试从Haskell"Simple Servers"维基页面运行一些示例代码:

import Network
import Control.Concurrent
import System.IO

main = withSocketsDo $ do
    sock <- listenOn $ PortNumber 5002
    loop sock

loop sock = do
   (h,_,_) <- accept sock
   forkIO $ body h
   loop sock
  where
   body h = do
       hPutStr h msg
       hFlush h
       hClose h

msg = "HTTP/1.0 200 OK\r\nContent-Length: 5\r\n\r\nPong!\r\n"
Run Code Online (Sandbox Code Playgroud)

我在装有El Capitan的Mac上做这个.

当我尝试使用httperf网页上指示的方式运行此代码时,我在控制台上收到以下错误消息:

ep1: <socket: 29>: hPutChar: resource vanished (Broken pipe)
ep1: <socket: 29>: hPutChar: resource vanished (Broken pipe)
ep1: <socket: 29>: hPutChar: resource vanished (Broken pipe)
ep1: <socket: 29>: hPutChar: protocol error (Protocol wrong type for socket)
Run Code Online (Sandbox Code Playgroud)

不同的运行将给出不同数量的这些消息.我做错了什么,这是一个错误,还是这种正常的预期行为?