0

これを機能させることができないようです。なぜThread.start起動しないのですか?

# encoding: utf-8
require 'socket'
print "choose host: "
host = gets.chomp
print "choose starting port: "
sport = gets.to_i
print "choose ending port: "
eport = gets.to_i
def scanner (sport, eport, host)
    while sport <= eport
        begin
            s = TCPSocket.new(host, sport)
            if s
                puts "Port #{sport} is open!"
            end
        rescue 
            puts "Port #{sport} is closed!"
        end 
        sport += 1

    end
end
Thread.start([scanner]sport, eport, host)
4

1 に答える 1

2

メインスレッドからワーカースレッドに参加する必要があります。何が起こっているのかというと、メインスレッドが終了し、プロセス全体が終了し、終了する前にワーカースレッドがシャットダウンします。

開始後、ワーカースレッドに参加して待機する必要があります。Thread.joinapiをスレッド化する言語で類似または類似の関数を探します。

于 2012-08-26T18:12:10.677 に答える