创建Haskel插座客户端

发布于 2025-02-07 21:15:20 字数 780 浏览 1 评论 0原文

我尝试将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由其他应用程序创建的SCOCKET连接到创建的套接字。但是在连接sock_logger(sockaddrinet 5000 0)

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

之后 我使用SockAddrinet 5000 0创建的所有插座。这是否取决于addlress(也许需要127.0.0.1而不是Local Host?)

I try to connect to created socket by 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 already created by other application. But after connect sock_logger (SockAddrInet 5000 0) i get

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

How can i connect to socket as client (without creation new socket)
All sockets i create with SockAddrInet 5000 0. Can it depends on addlress (maybe need 127.0.0.1 instead localhost?)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

锦上情书 2025-02-14 21:15:20

也许您正在寻找 tupletohostaddress ,如所示

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

Perhaps you're looking for tupleToHostAddress, as in

connect sock_logger (SockAddrInet 5000 (tupleToHostAddress (127, 0, 0, 1)))
风蛊 2025-02-14 21:15:20

Thx Daniel Wagner,确实需要使用tupletohostaddress(127、0、0、1)list.是错误的。正确版本:

  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..."

Thx Daniel Wagner, it's really need to use tupleToHostAddress (127, 0, 0, 1) and listen ... is wrong. Right version:

  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..."
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文