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]