我目前正在关注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
echoServer
和onCtrlC
函数在另一个模块中定义。
我将Right transport <- createTransport host port
更改为
t <- createTransport host port defaultTCPParameters
let transport = case t of
(Right t) -> t
(Left e) -> error $ show e
以便我可以看到错误信息是什么。
答案 0 :(得分:0)
基于评论的社区维基答案:
您位于NAT设备(例如宽带路由器)后面,并且有问题的地址属于设备,而不属于您的计算机。你无法绑定它。
在Windows上尝试ifconfig
命令(ipconfig
)。您将获得本地网络上的地址,或多个网络上的多个地址(例如有线和无线)。如果您有一个典型的家庭网络连接到宽带路由器,这些地址将从您的家庭网络可见,但不能从互联网上看到。要从外部访问服务器,您需要在路由器中配置“漏洞”。这是所有基本的网络内容,如果你想做任何“阴天”的事情,你必须学习它。