# File lib/fake_ftp/server.rb, line 67
    def start
      @started = true
      @server = ::TCPServer.new('127.0.0.1', port)
      @port = @server.addr[1]
      @thread = Thread.new do
        while @started
          debug('enter client loop')
          @client = begin
                      @server.accept
                    rescue => e
                      debug("error on accept: #{e}")
                      nil
                    end
          next unless @client
          respond_with('220 Can has FTP?')
          @connection = Thread.new(@client) do |socket|
            debug('enter request thread')
            while @started && !socket.nil? && !socket.closed?
              input = begin
                        socket.gets
                      rescue
                        debug("error on socket.gets: #{e}")
                        nil
                      end
              if input
                debug("server client raw: <- #{input.inspect}")
                respond_with(handle_request(input))
              end
            end
            unless @client.nil?
              @client.close unless @client.closed?
              @client = nil
            end
            debug('leave request thread')
          end
          debug('leave client loop')
        end
        unless @server.nil?
          @server.close unless @server.closed?
          @server = nil
        end
      end

      return unless passive_port
      @data_server = ::TCPServer.new('127.0.0.1', passive_port)
      @passive_port = @data_server.addr[1]
    end