在 Haskell 中启动 TCP 服务器

Starting TCP server in Haskell

我正在尝试根据 haskell.org 上提供的示例在 Haskell 中创建一个 TCP 服务器。当我 运行 来自带有 ghc run Main.hs 的终端的代码时,我得到:

[1 of 1] Compiling Main             ( Main.hs, Main.o )
Linking Main.exe ...

然后关闭。

代码

module Main where 
    import Network.Socket
    import Network.Socket.ByteString
    import qualified Data.ByteString.Char8 as C

    main::IO()
    main=do
        sock<-socket AF_INET Stream 0
        bind sock (SockAddrInet 8100 iNADDR_ANY)
        listen sock 2
        mainloop sock


    mainloop::Socket->IO()
    mainloop sock=do
        conn<-accept sock
        runConn conn
        mainloop sock


    runConn::(Socket,SockAddr)->IO()
    runConn (sock,_)=do
        Network.Socket.ByteString.send sock (C.pack "hello")
        close sock

我首先假设服务器可能以某种方式在后台 运行 所以我用 Simple Web Socket Client - 浏览器扩展和 nada 测试了它。

已测试url
ws://localhost:8100

您需要在编译后执行您的二进制文件: ./Main linux 或 Main.exe windows。

然后你可以请求你的服务器感谢telnet localhost 8100

telnet localhost 8100 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. helloConnection closed by foreign host.