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