如何使用createTransport?

时间:2013-04-18 02:41:47

标签: haskell

我目前正在关注Cloud-Haskell tutorial并被createTransport困住。在我看来,我只能在127.0.0.1打开服务器的传输,无法打开客户端连接到服务器的传输。我尝试使用两台计算机,使用curl ifconfig.me获取我的IP地址,但createTransport不会为我创建传输。有什么想法吗?

编辑:当地正在运作。

我的程序与教程完全相同,尝试连接两台机器:

curl ifconfig.me返回101.119.27.24

服务器命令行:

ServerClientServer 101.119.27.24 9000

返回错误:

bind: unsupported operation (Cannot assign rerquested address)

编辑:   服务器代码如下:

main :: IO ()
main = do
  [host, port]    <- getArgs
  serverDone      <- newEmptyMVar
  Right transport <- createTransport host port 
  Right endpoint  <- newEndPoint transport
  forkIO $ echoServer endpoint serverDone 
  putStrLn $ "Echo server started at " ++ show (address endpoint)
  readMVar serverDone `onCtrlC` closeTransport transport

echoServeronCtrlC函数在另一个模块中定义。

我将Right transport <- createTransport host port更改为

t <- createTransport host port defaultTCPParameters
let transport = case t of
  (Right t) -> t
  (Left e)  -> error $ show e

以便我可以看到错误信息是什么。

1 个答案:

答案 0 :(得分:0)

基于评论的社区维基答案:

您位于NAT设备(例如宽带路由器)后面,并且有问题的地址属于设备,而不属于您的计算机。你无法绑定它。

在Windows上尝试ifconfig命令(ipconfig)。您将获得本地网络上的地址,或多个网络上的多个地址(例如有线和无线)。如果您有一个典型的家庭网络连接到宽带路由器,这些地址将从您的家庭网络可见,但不能从互联网上看到。要从外部访问服务器,您需要在路由器中配置“漏洞”。这是所有基本的网络内容,如果你想做任何“阴天”的事情,你必须学习它。