finish log realdata send funtion
This commit is contained in:
267
json/save2json.h
267
json/save2json.h
@@ -102,15 +102,20 @@ protected:
|
||||
void run();
|
||||
};*/
|
||||
//lnk20250106
|
||||
//ʹ<><CAB9>telnet 127.0.0.1 12345<34><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
class Worker : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
Worker(QObject *parent = NULL) : QObject(parent), server(NULL), TEST_NUM(G_TEST_NUM) {
|
||||
timer = NULL;
|
||||
Worker(QObject *parent = NULL)
|
||||
: QObject(parent),
|
||||
server(NULL),
|
||||
TEST_NUM(G_TEST_NUM),
|
||||
timer(NULL),
|
||||
historyIndex(-1)
|
||||
{
|
||||
}
|
||||
|
||||
~Worker() {
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD>
|
||||
stopServer();
|
||||
@@ -155,7 +160,7 @@ public slots:
|
||||
server = NULL;
|
||||
qDebug() << "Server stopped.";
|
||||
}
|
||||
|
||||
|
||||
// ֹͣ<CDA3><D6B9>ʱ<EFBFBD><CAB1>
|
||||
if (timer) {
|
||||
timer->stop();
|
||||
@@ -190,8 +195,10 @@ private slots:
|
||||
qDebug() << "New connection established!";
|
||||
std::cout << "New connection established!\n";
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿɶ<DDBF>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> onReadyRead()
|
||||
connect(clientSocket, SIGNAL(readyRead()), this, SLOT(onReadyRead()));
|
||||
connect(clientSocket, SIGNAL(disconnected()), clientSocket, SLOT(deleteLater())); // <20>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ͻ<EFBFBD><EFBFBD>˶Ͽ<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> socket
|
||||
connect(clientSocket, SIGNAL(disconnected()), clientSocket, SLOT(deleteLater()));
|
||||
|
||||
// <20><><EFBFBD>ͻ<EFBFBD><CDBB>˷<EFBFBD><CBB7><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>
|
||||
if (clientSocket) {
|
||||
@@ -201,6 +208,10 @@ private slots:
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief <20><><EFBFBD>ֽڴ<D6BD><DAB4><EFBFBD>Telnet<65><74><EFBFBD>룬ʶ<EBA3AC><CAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD>)<29><><EFBFBD>˸س<F1A1A2BB><D8B3><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD>»س<C2BB>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊһ<CEAA><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEBDBB> processCommand <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*/
|
||||
void onReadyRead() {
|
||||
QTcpSocket *clientSocket = qobject_cast<QTcpSocket *>(sender());
|
||||
if (!clientSocket) {
|
||||
@@ -209,29 +220,91 @@ private slots:
|
||||
}
|
||||
|
||||
QByteArray data = clientSocket->readAll();
|
||||
QString command = QString::fromUtf8(data).trimmed(); // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȥ<EEB2A2><C8A5>ǰ<EFBFBD><C7B0><EFBFBD>ո<EFBFBD>
|
||||
|
||||
// <20><><EFBFBD>ֽڴ<D6BD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
for (int i = 0; i < data.size(); ++i) {
|
||||
char c = data[i];
|
||||
|
||||
switch (c) {
|
||||
case '\r':
|
||||
case '\n':
|
||||
// <20><><EFBFBD><EFBFBD>س<EFBFBD><D8B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if (!currentCommand.isEmpty()) {
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD>¼<EFBFBD><C2BC>
|
||||
if (commandHistory.isEmpty() || commandHistory.last() != currentCommand) {
|
||||
commandHistory.append(currentCommand);
|
||||
}
|
||||
historyIndex = commandHistory.size(); // ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>֮<EFBFBD><D6AE>
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
processCommand(currentCommand, clientSocket);
|
||||
currentCommand.clear();
|
||||
} else {
|
||||
// <20><><EFBFBD><EFBFBD>ֻ<EFBFBD>ǿ<EFBFBD><C7BF>У<EFBFBD><D0A3><EFBFBD><EFBFBD>Ǹ<EFBFBD><C7B8><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>
|
||||
clientSocket->write("\n> ");
|
||||
clientSocket->flush();
|
||||
}
|
||||
break;
|
||||
|
||||
case '\x1b':
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ESC <20><><EFBFBD><EFBFBD>
|
||||
// <20>ϼ<EFBFBD>ͷ: \x1b[A
|
||||
// <20>¼<EFBFBD>ͷ: \x1b[B
|
||||
if (i + 2 < data.size() && data[i+1] == '[') {
|
||||
char arrow = data[i+2];
|
||||
if (arrow == 'A') {
|
||||
// <20>ϼ<EFBFBD>ͷ
|
||||
handleUpArrow(clientSocket);
|
||||
} else if (arrow == 'B') {
|
||||
// <20>¼<EFBFBD>ͷ
|
||||
handleDownArrow(clientSocket);
|
||||
}
|
||||
// <20>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3<EFBFBD><33><EFBFBD>ֽ<EFBFBD>: \x1b [ X
|
||||
i += 2;
|
||||
}
|
||||
break;
|
||||
|
||||
case '\x7f':
|
||||
case '\x08':
|
||||
// <20>˸<EFBFBD><CBB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Del<65><6C>Backspace<63><65>
|
||||
if (!currentCommand.isEmpty()) {
|
||||
currentCommand.chop(1); // ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ַ<EFBFBD>
|
||||
// <20><><EFBFBD>ԣ<EFBFBD><D4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> + <20><><EFBFBD><EFBFBD> + <20>ٻ<EFBFBD><D9BB><EFBFBD>
|
||||
// "\b \b"<22><><EFBFBD><EFBFBD><EFBFBD>ھ<EFBFBD><DABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ն<EFBFBD><D5B6><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD>˸<EFBFBD>
|
||||
clientSocket->write("\b \b");
|
||||
clientSocket->flush();
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
// <20><>ͨ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>ӵ<EFBFBD> currentCommand <20><>
|
||||
currentCommand.append(c);
|
||||
// <20><><EFBFBD>Ե<EFBFBD><D4B5>ͻ<EFBFBD><CDBB><EFBFBD>
|
||||
clientSocket->write(&c, 1);
|
||||
clientSocket->flush();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
signals:
|
||||
void serverError();
|
||||
|
||||
private:
|
||||
// --------------------
|
||||
// <20><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// --------------------
|
||||
|
||||
/**
|
||||
* @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>)<29><><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD> onReadyRead() <20><><EFBFBD><EFBFBD> if-else <20><><EFBFBD><EFBFBD>
|
||||
*/
|
||||
void processCommand(const QString &command, QTcpSocket *clientSocket) {
|
||||
// <20><>ӡ<EFBFBD><D3A1>־
|
||||
qDebug() << "Received command:" << command;
|
||||
std::cout << "Received command: " << command.toStdString() << "\n";
|
||||
|
||||
// <20>洢<EFBFBD><EFBFBD>ʷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if (!command.isEmpty() && (commandHistory.isEmpty() || command != commandHistory.last())) {
|
||||
commandHistory.append(command);
|
||||
historyIndex = commandHistory.size(); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
|
||||
// <20>洢<EFBFBD><E6B4A2>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
|
||||
if (!currentCommand.isEmpty() && command != "up" && command != "down" && command != "\x7f") {
|
||||
currentCommand.append(command);
|
||||
}
|
||||
|
||||
// <20><><EFBFBD>ͻ<EFBFBD><CDBB>˷<EFBFBD><CBB7>͡<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>롱<EFBFBD><EBA1B1><EFBFBD><EFBFBD>
|
||||
clientSocket->write("Received command\n> ");
|
||||
clientSocket->flush();
|
||||
clientSocket->write("test_shell> ");
|
||||
clientSocket->flush(); // ȷ<><C8B7><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> help <20><><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>Ϊԭ<EFBFBD><EFBFBD> onReadyRead() <20>е<EFBFBD> if / else if <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// ------------------------------------------------------
|
||||
if (command == "help") {
|
||||
QString helpText = "Available commands:\n";
|
||||
helpText += "TEST_NUM=<num> - Set the TEST_NUM\n";
|
||||
@@ -239,12 +312,13 @@ private slots:
|
||||
helpText += "rt - Execute rocketmq_test_rt\n";
|
||||
helpText += "ud - Execute rocketmq_test_ud\n";
|
||||
helpText += "set - Execute rocketmq_test_set\n";
|
||||
helpText += "only - Execute rocketmq_test_only\n";
|
||||
helpText += "log - Execute rocketmq_test_log\n";
|
||||
helpText += "ledger <id> - Execute ledger with optional terminal_id\n";
|
||||
helpText += "value <valuename> - Execute value print with valuename : iedcount frontfun frontindex remtable\n";
|
||||
helpText += "value <valuename> - Execute value print with valuename : iedcount frontfun frontindex remtable\n";
|
||||
helpText += "exit - Exit the shell\n";
|
||||
helpText += "help - Show this help message\n";
|
||||
clientSocket->write(helpText.toUtf8());
|
||||
|
||||
}
|
||||
// <20><><EFBFBD>ö<EFBFBD><C3B6><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD>
|
||||
else if (command.startsWith("TEST_NUM=")) {
|
||||
@@ -252,10 +326,10 @@ private slots:
|
||||
int num = command.mid(9).toInt(&ok); // <20><>ȡ<EFBFBD>Ⱥź<C8BA><C5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֲ<EFBFBD><D6B2><EFBFBD>
|
||||
if (ok) {
|
||||
setTestNum(num); // <20><><EFBFBD><EFBFBD> TEST_NUM
|
||||
clientSocket->write("TEST_NUM updated\n> ");
|
||||
clientSocket->write("TEST_NUM updated\n");
|
||||
std::cout << "TEST_NUM updated\n";
|
||||
} else {
|
||||
clientSocket->write("Invalid number\n> ");
|
||||
clientSocket->write("Invalid number\n");
|
||||
std::cout << "Invalid number\n";
|
||||
}
|
||||
}
|
||||
@@ -264,35 +338,42 @@ private slots:
|
||||
qDebug() << "Executing rocketmq_test_rc()";
|
||||
std::cout << "Executing rocketmq_test_rc()\n";
|
||||
rocketmq_test_rc(); // <20><><EFBFBD><EFBFBD> rc <20><><EFBFBD><EFBFBD>
|
||||
clientSocket->write("Executed rocketmq_test_rc\n> ");
|
||||
clientSocket->write("Executed rocketmq_test_rc\n");
|
||||
}
|
||||
// <20><><EFBFBD><EFBFBD>ʵʱ<CAB5><CAB1><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD><EFBFBD>ı<EFBFBD>
|
||||
else if (command.startsWith("rt")) {
|
||||
qDebug() << "Executing rocketmq_test_rt()";
|
||||
std::cout << "Executing rocketmq_test_rt()\n";
|
||||
rocketmq_test_rt(); // <20><><EFBFBD><EFBFBD> rt <20><><EFBFBD><EFBFBD>
|
||||
clientSocket->write("Executed rocketmq_test_rt\n> ");
|
||||
clientSocket->write("Executed rocketmq_test_rt\n");
|
||||
}
|
||||
// <20><><EFBFBD><EFBFBD>̨<EFBFBD>˸<EFBFBD><CBB8>²<EFBFBD><C2B2><EFBFBD><EFBFBD>ı<EFBFBD>
|
||||
else if (command.startsWith("ud")) {
|
||||
qDebug() << "Executing rocketmq_test_ud()";
|
||||
std::cout << "Executing rocketmq_test_ud()\n";
|
||||
rocketmq_test_ud(); // <20><><EFBFBD><EFBFBD> ud <20><><EFBFBD><EFBFBD>
|
||||
clientSocket->write("Executed rocketmq_test_ud\n> ");
|
||||
clientSocket->write("Executed rocketmq_test_ud\n");
|
||||
}
|
||||
// <20><><EFBFBD>ͽ<EFBFBD><CDBD>̿<EFBFBD><CCBF>Ʋ<EFBFBD><C6B2><EFBFBD><EFBFBD>ı<EFBFBD>
|
||||
else if (command.startsWith("set")) {
|
||||
qDebug() << "Executing rocketmq_test_set()";
|
||||
std::cout << "Executing rocketmq_test_set()\n";
|
||||
rocketmq_test_set(); // <20><><EFBFBD><EFBFBD> set <20><><EFBFBD><EFBFBD>
|
||||
clientSocket->write("Executed rocketmq_test_set\n> ");
|
||||
clientSocket->write("Executed rocketmq_test_set\n");
|
||||
}
|
||||
// <20><><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̲<EFBFBD><CCB2><EFBFBD><EFBFBD>ı<EFBFBD>
|
||||
else if (command.startsWith("only")) {
|
||||
qDebug() << "Executing rocketmq_test_only()";
|
||||
std::cout << "Executing rocketmq_test_only()\n";
|
||||
rocketmq_test_only(); // <20><><EFBFBD><EFBFBD> set <20><><EFBFBD><EFBFBD>
|
||||
clientSocket->write("Executed rocketmq_test_only\n> ");
|
||||
rocketmq_test_only(); // <20><><EFBFBD><EFBFBD> rocketmq_test_only <20><><EFBFBD><EFBFBD>
|
||||
clientSocket->write("Executed rocketmq_test_only\n");
|
||||
}
|
||||
// <20><><EFBFBD><EFBFBD>ʵʱ<CAB5><CAB1>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD>
|
||||
else if (command.startsWith("log")) {
|
||||
qDebug() << "Executing rocketmq_test_log()";
|
||||
std::cout << "Executing rocketmq_test_log()\n";
|
||||
rocketmq_test_log(); // <20><><EFBFBD><EFBFBD> log <20><><EFBFBD><EFBFBD>
|
||||
clientSocket->write("Executed rocketmq_test_log\n");
|
||||
}
|
||||
// <20>鿴<EFBFBD><E9BFB4>ǰ<EFBFBD><C7B0><EFBFBD>̵<EFBFBD>̨<EFBFBD><CCA8>
|
||||
else if (command.startsWith("ledger")) {
|
||||
@@ -305,64 +386,30 @@ private slots:
|
||||
QString terminalId = parts[1];
|
||||
std::cout << "Calling ledger with terminal_id: " << terminalId.toStdString() << std::endl;
|
||||
|
||||
// <20>ģ<DEB8><C4A3><EFBFBD><EFBFBD><EFBFBD> ledger ʱ<><CAB1><EFBFBD><EFBFBD> clientSocket <20><>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD>豸
|
||||
ledger(terminalId.toStdString().c_str(), clientSocket); // <20><><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ledger<65><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD> clientSocket
|
||||
|
||||
clientSocket->write("Executed ledger with terminal_id\n> ");
|
||||
ledger(terminalId.toStdString().c_str(), clientSocket); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ledger
|
||||
clientSocket->write("Executed ledger with terminal_id\n");
|
||||
} else {
|
||||
std::cout << "Calling ledger without parameters\n";
|
||||
|
||||
// <20>ģ<DEB8><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DEB2><EFBFBD><EFBFBD><EFBFBD> ledger<65><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD> clientSocket
|
||||
ledger(NULL, clientSocket); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DEB2><EFBFBD><EFBFBD><EFBFBD> ledger<65><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD> clientSocket
|
||||
|
||||
clientSocket->write("Executed ledger without parameters\n> ");
|
||||
ledger(NULL, clientSocket); // <20><EFBFBD><DEB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ledger
|
||||
clientSocket->write("Executed ledger without parameters\n");
|
||||
}
|
||||
}
|
||||
// <20>鿴<EFBFBD><E9BFB4>ǰ<EFBFBD><C7B0><EFBFBD>̵<EFBFBD>ָ<EFBFBD><D6B8>ֵ
|
||||
else if (command.startsWith("value")) {
|
||||
std::cout << "Executing value()" << std::endl;
|
||||
|
||||
|
||||
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>еIJ<D0B5><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
QStringList parts = command.split(" "); // <20><><EFBFBD>ݿո<DDBF><D5B8>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>
|
||||
if (parts.size() > 1) { // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>а<EFBFBD><D0B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
QStringList parts = command.split(" ");
|
||||
if (parts.size() > 1) {
|
||||
QString variableName = parts[1];
|
||||
|
||||
std::cout << "Calling value() with variable name: " << variableName.toStdString() << std::endl;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> value() <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
||||
value_print(variableName.toStdString().c_str(), clientSocket); // <20><><EFBFBD><EFBFBD> value() <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><D4B8>ݱ<EFBFBD><DDB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
||||
|
||||
clientSocket->write("Executed value with variable name: " + variableName.toUtf8() + "\n> ");
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> value_print() <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
||||
value_print(variableName.toStdString().c_str(), clientSocket);
|
||||
clientSocket->write("Executed value with variable name: " + variableName.toUtf8() + "\n");
|
||||
} else {
|
||||
std::cout << "Calling value without parameters" << std::endl;
|
||||
|
||||
// <20><>ʾ<EFBFBD>û<EFBFBD><C3BB><EFBFBD>Ҫ<EFBFBD>ṩ<EFBFBD><E1B9A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
clientSocket->write("Please provide a variable name\n> ");
|
||||
}
|
||||
}
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʷ
|
||||
if (command == "up") {
|
||||
if (historyIndex > 0) {
|
||||
historyIndex--;
|
||||
clientSocket->write(commandHistory[historyIndex].toUtf8());
|
||||
} else {
|
||||
clientSocket->write("No previous command\n> ");
|
||||
}
|
||||
} else if (command == "down") {
|
||||
if (historyIndex < commandHistory.size() - 1) {
|
||||
historyIndex++;
|
||||
clientSocket->write(commandHistory[historyIndex].toUtf8());
|
||||
} else {
|
||||
clientSocket->write("No next command\n> ");
|
||||
}
|
||||
}
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> backspace <20><>
|
||||
else if (command == "\x7f") {
|
||||
if (!currentCommand.isEmpty()) {
|
||||
currentCommand.chop(1); // ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ַ<EFBFBD>
|
||||
clientSocket->write(currentCommand.toUtf8());
|
||||
clientSocket->write("Please provide a variable name\n");
|
||||
}
|
||||
}
|
||||
// <20><><EFBFBD><EFBFBD> exit <20><><EFBFBD><EFBFBD>
|
||||
@@ -372,26 +419,72 @@ private slots:
|
||||
clientSocket->flush();
|
||||
clientSocket->disconnectFromHost(); // <20>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD>
|
||||
clientSocket->waitForDisconnected(); // ȷ<><C8B7><EFBFBD><EFBFBD><EFBFBD>ӶϿ<D3B6>
|
||||
return;
|
||||
}
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ֪<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// δ֪<CEB4><D6AA><EFBFBD><EFBFBD>
|
||||
else {
|
||||
clientSocket->write("Unknown command\n> ");
|
||||
clientSocket->write("Unknown command\n");
|
||||
}
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><F3A3ACBB><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>к<EFBFBD><D0BA><EFBFBD>ʾ<EFBFBD><CABE>
|
||||
clientSocket->write("> ");
|
||||
clientSocket->flush();
|
||||
}
|
||||
|
||||
signals:
|
||||
void serverError();
|
||||
/**
|
||||
* @brief <20><><EFBFBD><EFBFBD><EFBFBD>ϼ<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7>¼<EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*/
|
||||
void handleUpArrow(QTcpSocket *clientSocket) {
|
||||
if (!commandHistory.isEmpty() && historyIndex > 0) {
|
||||
historyIndex--;
|
||||
currentCommand = commandHistory[historyIndex];
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD>ף<EFBFBD><D7A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD>ǰ<EFBFBD><C7B0> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20>س<EFBFBD><D8B3><EFBFBD><EFBFBD>ÿո<D5B8>)
|
||||
clientSocket->write("\r");
|
||||
clientSocket->write(" ");
|
||||
clientSocket->write("\r> ");
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD>
|
||||
clientSocket->write(currentCommand.toUtf8());
|
||||
clientSocket->flush();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief <20><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7>¼<EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*/
|
||||
void handleDownArrow(QTcpSocket *clientSocket) {
|
||||
if (!commandHistory.isEmpty() && historyIndex < commandHistory.size() - 1) {
|
||||
historyIndex++;
|
||||
currentCommand = commandHistory[historyIndex];
|
||||
|
||||
clientSocket->write("\r");
|
||||
clientSocket->write(" ");
|
||||
clientSocket->write("\r> ");
|
||||
clientSocket->write(currentCommand.toUtf8());
|
||||
clientSocket->flush();
|
||||
}
|
||||
else if (historyIndex == commandHistory.size() - 1) {
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ٰ<EFBFBD><D9B0>¼<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
historyIndex = commandHistory.size();
|
||||
currentCommand.clear();
|
||||
|
||||
clientSocket->write("\r");
|
||||
clientSocket->write(" ");
|
||||
clientSocket->write("\r> ");
|
||||
clientSocket->flush();
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
QList<QString> commandHistory; // <20>洢<EFBFBD><E6B4A2>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD>
|
||||
int historyIndex = -1; // <20><>ǰ<EFBFBD><C7B0>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
QString currentCommand; // <20><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
|
||||
QTcpServer *server;
|
||||
QTimer *timer;
|
||||
int TEST_NUM;
|
||||
QMutex mutex;
|
||||
|
||||
// <20><>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
QList<QString> commandHistory; // <20>洢<EFBFBD><E6B4A2>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD>
|
||||
int historyIndex; // <20><>ǰ<EFBFBD><C7B0>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
QString currentCommand; // <20><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
};
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user