# File lib/net/ssh/service/forward/driver.rb, line 190
          def remote( handler, remote_port, remote_host="127.0.0.1" )
            if @remote_forwards[ remote_port ]
              raise Net::SSH::Exception, "#{remote_port} is already forwarded"
            end

            writer = @buffers.writer
            writer.write_string remote_host
            writer.write_long remote_port.to_i

            @connection.global_request( "tcpip-forward", writer
            ) do |success, response|
              if success
                remote_port = response.read_long if remote_port == 0
                @remote_forwards[ remote_port ] = { :port => remote_port,
                                                    :handler => handler }
                handler.setup( remote_port ) if handler.respond_to?( :setup )
              else
                msg = "remote port #{remote_port} could not be forwarded " +
                      "to local host"
                if handler.respond_to?( :error )
                  handler.error( msg )
                else
                  raise Net::SSH::Exception, msg
                end
              end
            end
          end