我目前正在关注Cloud-Haskell教程并坚持下去createTransport.在我看来,我只能在127.0.0.1打开服务器的传输,无法打开客户端连接到服务器的传输.我尝试使用两台机器,curl ifconfig.me用来获取我的IP地址,然而,createTransport不会为我创建一个传输.有任何想法吗?
编辑:当地正在运作.
我的程序与教程完全相同,尝试连接两台机器:
curl ifconfig.me 回报 101.119.27.24
服务器的命令行:
ServerClientServer 101.119.27.24 9000
Run Code Online (Sandbox Code Playgroud)
错误返回:
bind: unsupported operation (Cannot assign rerquested address)
Run Code Online (Sandbox Code Playgroud)
编辑:服务器代码如下:
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
Run Code Online (Sandbox Code Playgroud)
的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
Run Code Online (Sandbox Code Playgroud)
这样我就可以看到错误信息是什么.
基于评论的社区维基答案:
您位于 NAT 设备(例如宽带路由器)后面,并且相关地址属于该设备,而不属于您的计算机。您无法绑定到它。
尝试该ifconfig命令(ipconfig在 Windows 上)。您将获得本地网络上的一个地址,或多个网络(例如有线和无线)上的多个地址。如果您有一个连接到宽带路由器的典型家庭网络,这些地址将从您的家庭网络中可见,但从互联网上看不到。为了使您的服务器能够从外部访问,您需要在路由器中配置一个“洞”。这些都是基本的网络知识,如果你想做任何“多云”的事情,你就必须学习它。
| 归档时间: |
|
| 查看次数: |
386 次 |
| 最近记录: |