Haskell 为什么';这个TCP服务器不能工作吗?
我编写了这个简单的tcp服务器:Haskell 为什么';这个TCP服务器不能工作吗?,haskell,Haskell,我编写了这个简单的tcp服务器: import Network import Network.Socket.ByteString main :: IO() main = do sock <- listenOn $ PortNumber 2000 contents <- recv sock 4096 print contents 在windows上: Network.Socket.recvBuf:failed(No error) 该程序有什么问题?list
import Network
import Network.Socket.ByteString
main :: IO()
main = do
sock <- listenOn $ PortNumber 2000
contents <- recv sock 4096
print contents
在windows上:
Network.Socket.recvBuf:failed(No error)
该程序有什么问题?
listenOn
只创建一个“侦听套接字”,用于“侦听”到服务器的新连接。您应该使用accept
功能获取新客户机,如下所示:
main :: IO ()
main = do
sock <- listenOn $ PortNumber 2000
(client, _, _) <- accept sock
contents <- hGetContents client
print contents
sClose sock
main :: IO ()
main = do
sock <- listenOn $ PortNumber 2000
forever $ do
(client, _) <- accept sock
forkIO $ do
contents <- recv client 4096
print contents
sClose client
如果您想处理更多客户端,可以使用forkIO
如下:
main :: IO ()
main = do
sock <- listenOn $ PortNumber 2000
(client, _, _) <- accept sock
contents <- hGetContents client
print contents
sClose sock
main :: IO ()
main = do
sock <- listenOn $ PortNumber 2000
forever $ do
(client, _) <- accept sock
forkIO $ do
contents <- recv client 4096
print contents
sClose client
main::IO()
main=do
短袜