Ruby is fluent in most of the Internet's protocols, both low-level and
high-level.
For those who enjoy groveling around at the network level, Ruby
comes with a set of classes in the socket library (documented starting
on page 469). These classes give you access to TCP, UDP, SOCKS, and
Unix domain sockets, as well as any additional socket types supported
on your architecture. The library also provides helper classes to make
writing servers easier. Here's a simple program that gets information
about the ``oracle'' user on our local machine using the finger
protocol.
require 'socket'
client = TCPSocket.open('localhost', 'finger')
client.send("oracle\n", 0) # 0 means standard packet
puts client.readlines
client.close
|
produces:
Login: oracle Name: Oracle installation
Directory: /home/oracle Shell: /bin/bash
Never logged in.
No Mail.
No Plan.
|
At a higher level, the lib/net set of library modules provides
handlers for a set of application-level protocols (currently FTP,
HTTP, POP, SMTP, and telnet). These are documented starting
on page 482. For example, the following program lists the
images that are displayed on the Pragmatic Programmer home page.
require 'net/http'
h = Net::HTTP.new('www.pragmaticprogrammer.com', 80)
resp, data = h.get('/index.html', nil)
if resp.message == "OK"
data.scan(/<img src="(.*?)"/) { |x| puts x }
end
|
produces:
images/title_main.gif
images/dot.gif
images/dot.gif
images/dot.gif
images/aafounders_70.jpg
images/pp_cover_thumb.png
images/ruby_cover_thumb.png
images/dot.gif
images/dot.gif
|