371: def bind(address)
372: return address unless String === address
373: if address[0] == ?/
374: if File.exist?(address)
375: raise ArgumentError, "#{address} is not a socket" unless File.socket?(address)
376: File.unlink(address)
377: end
378: sock = UNIXServer.new(address)
379: File.chmod 0666, address
380: elsif address =~ /^(\d+\.\d+\.\d+\.\d+):(\d+)$/
381: sock = TCPServer.new($1, $2.to_i)
382: else
383: raise ArgumentError, "Don't know how to bind #{address}"
384: end
385: sock.setsockopt(IPPROTO_TCP, TCP_NODELAY, 1) if defined?(TCP_NODELAY)
386: sock
387: end