From: Dave Thomas Date: 2001-06-22T11:41:05+09:00 Subject: [ruby-talk:16738] Re: socket bug Joseph McDonald writes: > I'm trying to track down a problem with sockets that I'm having. I > am getting a couple of different errors. > > #!/usr/local/bin/ruby > > require 'socket' > > trap("CLD") { > pid = Process.wait > } > > s = TCPServer.new("0.0.0.0",6666) > while(new_sock = s.accept) > pid = fork > if(pid == nil) > line = new_sock.gets > new_sock.print("got #{line}\n") > new_sock.shutdown > exit > end > end > s.close You're running out of FD's in the server process. You need to close the new socket in the parent after you fork: s = TCPServer.new("0.0.0.0",6666) while(new_sock = s.accept) pid = fork if(pid == nil) line = new_sock.gets new_sock.print("got #{line}\n") new_sock.shutdown exit end new_sock.close #<<<<<<<<<<<<<< end s.close Dave