我嘗試通過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 5000 0 創建的所有套接字。它是否取決于地址(可能需要 127.0.0.1 而不是 localhost?)
uj5u.com熱心網友回復:
也許你正在尋找tupleToHostAddress,如
connect sock_logger (SockAddrInet 5000 (tupleToHostAddress (127, 0, 0, 1)))
uj5u.com熱心網友回復:
Thx 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..."
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/493309.html
