def start 
      return if ! @stopped
      @logger.info "Starting"

      @reactor.listen("0.0.0.0",@port,:listener_socket)

      @stopped = false
      @worker = Thread.new do
        QuartzTorrent.initThread("peerclient")
        begin
          @toStart.each{ |trackerclient| trackerclient.start }
          @reactor.start 
          @logger.info "Reactor stopped."
          @handler.torrentData.each do |k,v|
            v.trackerClient.stop
          end 
        rescue
          @logger.error "Unexpected exception in worker thread: #{$!}"
          @logger.error $!.backtrace.join("\n")
        end
      end
    end
def start 
      return if ! @stopped
      @logger.info "Starting"

      @reactor.listen("0.0.0.0",@port,:listener_socket)

      @stopped = false
      @worker = Thread.new do
        QuartzTorrent.initThread("peerclient")
        begin
          @toStart.each{ |trackerclient| trackerclient.start }
          @reactor.start 
          @logger.info "Reactor stopped."
          @handler.torrentData.each do |k,v|
            v.trackerClient.stop
          end 
        rescue
          @logger.error "Unexpected exception in worker thread: #{$!}"
          @logger.error $!.backtrace.join("\n")
        end
      end
    end
Start the PeerClient: open the listening port, and start a new thread to begin downloading/uploading pieces.
 If listening fails, an exception of class Errno::EADDRINUSE is thrown.