我正在阅读“Sinatra Up& Running”一书中的练习,并尝试使用Telnet向Sinatra发送HTTP消息。
这就是我想要做的事情
[~]$ telnet 0.0.0.0 4567
然而,我收到错误:
Trying 0.0.0.0...
telnet: connect to address 0.0.0.0: Connection refused
telnet: Unable to connect to remote host
Sinatra正在收听localhost:4567而不是0.0.0.0:4567,我认为这表明了问题。
我在http://www.sinatrarb.com/configuration.html找到了一些文档,讨论了如何能够专门配置开发环境来监听0.0.0.0。我通过了:
ruby server.rb -o set :bind, '0.0.0.0'
能够调整Sinatra收听0.0.0.0:4567的位置,但telnet 0.0.0.0 4567
仍然提供相同的错误消息。
答案 0 :(得分:1)
当你告诉服务器监听0.0.0.0
时,实际上并不是一个特定的地址,你真的告诉它绑定到所有可用的网络接口。要连接到它,请使用127.0.0.1
或localhost
,这些地址始终表示“此主机”:
telnet 127.0.0.1 4567
答案 1 :(得分:0)
如果你将Sinatra绑定到0.0.0.0:4567并且它正在监听它们,你将能够通过机器的ip从外部命中你的机器。
E.g。 machine-01(192.168.122.100)运行Sinatra,绑定到0.0.0.0:4567然后从机器02(192.168.122.200)运行192.168.122.100:4567(假设没有防火墙)
正如另一篇文章建议的那样,如果你想在机器01上完成所有操作,那么你想将Sinatra绑定到localhost:4567(127.0.0.1:4567),那么你将能够远程传送localhost: 4567