我必须在 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
执行代码就挂了。另外,如果可能的话,请提供一些链接以阅读以获得问题的概念背景。