From: Wakou Aoyama Date: 1999-06-06T08:01:13+09:00 Subject: [ruby-list:14841] Re: HTTP Client with Ruby 青山です。 http-access, KNClient を見ていないので何が問題になっているのかわかりま せんが、こんな感じではどうでしょうか。Linkavailable: Ruby のトップ 10 には HTTP 1.0 オンリーな所が無かったので HTTP 1.0 では試していませんが、 まあ、おそらくは単に切断されるだけだと思うので、このままいけるような気 がします。(用途を限定しているので、インターフェイスがいまいち) #!/usr/local/bin/ruby require "socket" CR = "\015" LF = "\012" EOL = CR + LF def get_head(host, port, files) heads = {} sock = nil for i in 0 ... files.size if sock == nil or sock.closed? sock = TCPsocket.open(host, port) sock.binmode STDERR.print "server open.\n" end if i == files.size - 1 connection = "Close" else connection = "Keep-Alive" end sock << "HEAD " << files[i] << " HTTP/1.1" << EOL sock << "Host: " << host << EOL sock << "Connection: " << connection << EOL sock << EOL head = sock.gets(EOL + EOL) if /Connection:\s+Close/ni === head sock.close if not sock.closed? end heads[files[i]] = head end sock.close if not sock.closed? heads end port = "80" host = "www.jin.gr.jp" files = %w[ /~nahi/ /~nahi/Ruby/ /~nahi/link-Ruby.html ] # Keep-Alive を受け付けないホストの例 #host = "www.isc.meiji.ac.jp" #files = %w[ /~ee77038/ /~ee77038/ruby/index.html /~ee77038/ruby/program.htm ] get_head(host, port, files).each do |file, head| print file, "\n" print head end -- 青山 和光 Wakou Aoyama