使用Telnet发送HTTP消息的问题?

时间:2014-01-27 14:56:24

标签: ruby sinatra

我正在阅读“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仍然提供相同的错误消息。

2 个答案:

答案 0 :(得分:1)

当你告诉服务器监听0.0.0.0时,实际上并不是一个特定的地址,你真的告诉它绑定到所有可用的网络接口。要连接到它,请使用127.0.0.1localhost,这些地址始终表示“此主机”:

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