创建haskel socket客户端



我尝试通过haskell连接到已创建的套接字:

-- Logger
putStrLn "Create socket"
sock_logger <- socket AF_INET Stream 0     
putStrLn "Bind socket"           
connect sock_logger (SockAddrInet 5000 0)    
putStrLn "Listen socket"  
listen sock_logger 2                                  
putStrLn "Logger listening on port 5000..."
(conn_logger, _) <- accept sock_logger                       
putStrLn "Logger connection accepted"

Scocket已被其他应用程序创建。但是在connect sock_logger (SockAddrInet 5000 0)之后,我得到

helloworld-exe.EXE: Network.Socket.connect: <socket: 440>: failed (Cannot assign requested address (WSAEADDRNOTAVAIL))

如何连接到客户端套接字(不创建新的套接字)我用SockAddrInet 50000创建的所有套接字。是否可以依赖于地址(可能需要127.0.0.1而不是localhost?)

也许您正在寻找tupleToHostAddress,如

connect sock_logger (SockAddrInet 5000 (tupleToHostAddress (127, 0, 0, 1)))

谢谢Daniel Wagner,确实需要使用tupleToHostAddress (127, 0, 0, 1)listen ...是错误的。正确的版本:

putStrLn "Create socket"
sock_logger <- socket AF_INET Stream 0     
putStrLn "Bind socket"           
connect sock_logger (SockAddrInet 5000 (tupleToHostAddress (127, 0, 0, 1)))                      
putStrLn "Connected to logger on port 5000..."

最新更新