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