簡體   English   中英

在 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 對其進行了測試。

測試網址
ws://localhost:8100

您需要在編譯二進制文件后執行它們: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.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM