Node.js 使用nodejs和powershell清除telnet流的正确方法是什么?

Node.js 使用nodejs和powershell清除telnet流的正确方法是什么?,node.js,powershell,output,telnet,Node.js,Powershell,Output,Telnet,我有一个整洁的小nodejs脚本,主要用于在文本模式telnet中登录原始套接字。我注意到一些服务器将发送打印重新定位,但我的程序一定忽略了某种cls等价物;因为重新定位的文本只是在现有文本上打印,留下混乱的新旧输出。如何接受和处理telnet字符序列,以便使用以下程序清除输出 var net = require("net"); var argv = process.argv.slice(2); var client = null; var echo = false; var hostName

我有一个整洁的小nodejs脚本,主要用于在文本模式telnet中登录原始套接字。我注意到一些服务器将发送打印重新定位,但我的程序一定忽略了某种cls等价物;因为重新定位的文本只是在现有文本上打印,留下混乱的新旧输出。如何接受和处理telnet字符序列,以便使用以下程序清除输出

var net = require("net");
var argv = process.argv.slice(2);
var client = null;
var echo = false;
var hostName = null;
var port = null;
var charSet = "utf-8";

var init = function(print, error, quit, argv, keyboard, argParser) {
    argv.forEach(argParser);
    checkVars();
    client = new net.Socket();
    client.on("data", print);
    client.on("error", error);
    client.on("close", quit);
    client.connect(port, hostName, function() { });
    process.stdin.resume();
    process.stdin.setRawMode(true);
    process.stdin.setEncoding(charSet);
    process.stdin.on("data", keyboard);
};

var print = function(text) {
    process.stdout.write(text);
};

var keyboard = function(key) {
    if (echo) print(key);
    client.write(key);
};

var error = function(e) {
    print(e.toString() + "\n");
    quit();
};

var quit = function() {
    print("\n");
    process.exit();
};

var argParser = function(arg) {
    if (arg.startsWith("echo")) echo = true;
    else if(arg.startsWith("host:")) hostName = arg.split(":")[1];
    else if (arg.startsWith("port:")) port = parseInt(arg.split(":")[1]);
    else if (arg.startsWith("charSet:")) charSet = arg.split(":")[1];
}

var checkVars = function() {
    if (hostName == null ||
        port == null) {
      print("\nNEVER RUN FOREIGN CODE WITHOUT FIRST READING IT\n");
      quit();
    }
}

init(print, error, quit, argv, keyboard, argParser);

如果远程主机正在移动光标,则可能是使用ANSI转义码。如果是,Esc[2J是清屏转义码