Daniel Martin <martin / snowplow.org> writes:

> Tell me, does this ruby script work on your two environments?
>
> # In one script, start this first
>      require 'socket'
>      include Socket::Constants
>      sockaddrinfo = Socket.getaddrinfo( 'localhost', 2200, AF_INET,
>                                         SOCK_STREAM )[0]
>      socket = Socket.new( *sockaddrinfo[4..6] )
>      sockaddr = Socket.pack_sockaddr_in( sockaddrinfo[1], sockaddrinfo[3] )
>      socket.bind( sockaddr )
>      socket.listen( 5 )
>      client, client_sockaddr = socket.accept
>      puts "The client said, '#{client.readline.chomp}'"
>      client.puts "Hello from script one!"
>      socket.close


Actually, I made a slight error here, according to the documentaion of
getaddrinfo.  That "sockaddr =" bit should be:

sockaddrinfo = Socket.getaddrinfo( 'localhost', 2200, AF_INET,
                                   SOCK_STREAM, nil, AI_PASSIVE )[0]

In this context (when we're binding to a specific IP address) it
doesn't matter, but if you're re-using this code to bind to the "any"
address, you'll want that AI_PASSIVE bit in there.  (You'll also want
to replace 'localhost' with nil)

-- 
s=%q(  Daniel Martin -- martin / snowplow.org
       puts "s=%q(#{s})",s.map{|i|i}[1]       )
       puts "s=%q(#{s})",s.map{|i|i}[1]