Armadilloフォーラム

ローカルWEBサーバーのhttpのgetレスポンスが返らない

mouri

2020年11月24日 10時22分

rubyでhttpのgetレスポンスを表示しようとしてますが
インターネットのレスポンスは返ってきますが
イントラネットのレスポンスが返りません(connectで止まってるように思えます)
※pingで疎通はできます

client.rb
----------- ここから
require "net/http"
uri = URI.parse("http://192.168.0.153:8080/examples/servlets/servlet/HelloWorldExample") ①
#uri = URI.parse("http://www.google.com") ②
response = Net::HTTP.get_response(uri)
puts response.body
----------- ここまで
補足)①はtomcatのサンプルサーブレットで
   ブラウザで実行するとHello World!と表示されるだけのものです

実行結果(コメントアウトで実行文を切り換えました)
②の実行は返ってきます
atmark@armadillo:~/test$ ruby client.rb
・・・

①の実行はレスポンスが返りません(実行中に止まるのでCTRL+Cで中断した)
atmark@armadillo:~/test$ ruby client.rb
^C/usr/lib/ruby/2.3.0/net/http.rb:880:in `initialize': Interrupt
from /usr/lib/ruby/2.3.0/net/http.rb:880:in `open'
from /usr/lib/ruby/2.3.0/net/http.rb:880:in `block in connect'
from /usr/lib/ruby/2.3.0/timeout.rb:91:in `block in timeout'
from /usr/lib/ruby/2.3.0/timeout.rb:101:in `timeout'
from /usr/lib/ruby/2.3.0/net/http.rb:878:in `connect'
from /usr/lib/ruby/2.3.0/net/http.rb:863:in `do_start'
from /usr/lib/ruby/2.3.0/net/http.rb:852:in `start'
from /usr/lib/ruby/2.3.0/net/http.rb:584:in `start'
from /usr/lib/ruby/2.3.0/net/http.rb:479:in `get_response'
from client.rb:5:in `'

ちなみに、WEBサーバーはWindowsですがFireWallはオフにしており
①は他PCのブラウザで表示されます

G3L側で何か設定が必要でしょうか?
WEBサーバー側で必要な設定はあるのでしょうか?

コメント

at_syunya.ohshio

2020年11月25日 11時19分

大塩です。

> rubyでhttpのgetレスポンスを表示しようとしてますが
> インターネットのレスポンスは返ってきますが
> イントラネットのレスポンスが返りません(connectで止まってるように思えます)
> ※pingで疎通はできます
>
> client.rb
> ----------- ここから
> require "net/http"
> uri = URI.parse("http://192.168.0.153:8080/examples/servlets/servlet/HelloWorldExample") ①
> #uri = URI.parse("http://www.google.com") ②
> response = Net::HTTP.get_response(uri)
> puts response.body
> ----------- ここまで
> 補足)①はtomcatのサンプルサーブレットで
>    ブラウザで実行するとHello World!と表示されるだけのものです
>
> 実行結果(コメントアウトで実行文を切り換えました)
> ②の実行は返ってきます
> atmark@armadillo:~/test$ ruby client.rb
> ・・・
>
> ①の実行はレスポンスが返りません(実行中に止まるのでCTRL+Cで中断した)
> atmark@armadillo:~/test$ ruby client.rb
> ^C/usr/lib/ruby/2.3.0/net/http.rb:880:in `initialize': Interrupt
> from /usr/lib/ruby/2.3.0/net/http.rb:880:in `open'
> from /usr/lib/ruby/2.3.0/net/http.rb:880:in `block in connect'
> from /usr/lib/ruby/2.3.0/timeout.rb:91:in `block in timeout'
> from /usr/lib/ruby/2.3.0/timeout.rb:101:in `timeout'
> from /usr/lib/ruby/2.3.0/net/http.rb:878:in `connect'
> from /usr/lib/ruby/2.3.0/net/http.rb:863:in `do_start'
> from /usr/lib/ruby/2.3.0/net/http.rb:852:in `start'
> from /usr/lib/ruby/2.3.0/net/http.rb:584:in `start'
> from /usr/lib/ruby/2.3.0/net/http.rb:479:in `get_response'
> from client.rb:5:in `'
>
> ちなみに、WEBサーバーはWindowsですがFireWallはオフにしており
> ①は他PCのブラウザで表示されます
>
> G3L側で何か設定が必要でしょうか?
> WEBサーバー側で必要な設定はあるのでしょうか?

googleサーバに接続で来ているとのことであるため、G3Lのネットワーク設定は問題ないと思われます。
また、他PCからWEBサーバにアクセスできていることから、そちらも問題ないと思われます。

rubyプログラムに記載されているWEBサーバーのURLが正しいかご確認いただけますでしょうか。
また、Armadillo-IoT G3L からWEBサーバに対して ssh や wget による適当なデータ取得等を行い、
Armadillo-IoT G3L がWEBサーバと通信できることを確認いただけますでしょうか。

以上です。