421: def bind(address)
422: return address unless String === address
423: if address[0] == ?/
424: if File.exist?(address)
425: raise ArgumentError, "#{address} is not a socket" unless File.socket?(address)
426: File.unlink(address)
427: end
428: sock = UNIXServer.new(address)
429: File.chmod 0666, address
430: elsif address =~ /^(\d+\.\d+\.\d+\.\d+):(\d+)$/
431: sock = TCPServer.new($1, $2.to_i)
432: else
433: raise ArgumentError, "Don't know how to bind #{address}"
434: end
435: sock.setsockopt(IPPROTO_TCP, TCP_NODELAY, 1) if defined?(TCP_NODELAY)
436: sock
437: end