#!/usr/bin/ruby -w #
# Ruby Multithreading Port Scanner #
# Version: 0.02 #
# (c)2006 Suninny's Rails Theme #
# http://blog.youkuaiyun.com/rails #
#####################################
require 'socket'
include Socket::Constants

ports = (1..1024).to_a
threads = []
time1 = Time.now
for port in ports
threads << Thread.new(port) do |theport|
begin
sock = Socket.new(AF_INET, SOCK_STREAM, 0)
sockaddr = Socket.pack_sockaddr_in(theport, 'localhost')
sock.connect(sockaddr)
puts "Port:#{theport} is Opend! "
sock.close
rescue
#...
end
end
end
threads.each {|thr| thr.join}

puts " 共耗时:#{Time.now - time1}秒"
