【发布时间】:2012-10-08 08:57:08
【问题描述】:
我必须在 sinatra 中转储一项服务并将其显示在网页的内容区域中。
我必须通过代码访问的服务在端口 6557 的服务器上运行。它不使用任何加密或身份验证。它是一个普通的只读请求响应,类似于 http。 这是在终端中起作用的方法
$ echo "GET hosts" | nc 192.168.1.1 6557
给了我预期的输出。我需要使用 sinatra 应用程序做类似的事情。
我写了这段代码,但完全不正确。有人可以帮助我提供代码或查找材料或示例。
get '/' do
host = "192.168.1.1"
port = 6557
dat = ""
@socket = TCPSocket.open (host, port)
while(true)
if(IO.select([],[],[@socket],0))
socket.close
return
end
begin
while( (data = @socket.recv_nonblock(100)) != "")
dat = dat+ data
end
rescue Errno::EAGAIN
end
begin
@str = "GET hosts"
@socket.puts(@str);
rescue Errno::EAGAIN
rescue EOFError
exit
end
IO.select([@socket], [@socket], [@socket])
end
@line = dat
erb :info
end
执行中的代码就挂了。 此外,如果可能,请提供一些链接以供阅读以了解问题的概念背景。
【问题讨论】: