在Haskell中启动TCP服务器

问题描述 投票:0回答:1

我试图在TCP提供的示例中在Haskell中创建一个haskell.org服务器。当我从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测试它。

经过测试的网址 ws://localhost:8100

sockets haskell tcpserver
1个回答
3
投票

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

然后,您可以通过telnet localhost 8100请求您的服务器

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

© www.soinside.com 2019 - 2024. All rights reserved.