Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

建议增加一些状态输出 #27

Open
ywgATustcbbs opened this issue May 22, 2024 · 5 comments
Open

建议增加一些状态输出 #27

ywgATustcbbs opened this issue May 22, 2024 · 5 comments

Comments

@ywgATustcbbs
Copy link

一些建议

  1. 客户端建立连接后在两侧输出连接信息提示,目前服务端不能显示有多少客户端连接到服务端
  2. 建议显示网络统计信息,显示实时或若干秒内的统计信息,例如网速,有效网速,丢包率,延迟,丢包后使用fec恢复数据的成功率。这些信息可以更好的帮助用户调整配置参数,否则调参全靠自己猜测
@cnbatch
Copy link
Owner

cnbatch commented Jun 2, 2024

已在新版中支持,指定 log_path 后,会把网络状态写入log文件,并输出到控制台

@ywgATustcbbs
Copy link
Author

已在新版中支持,指定 log_path 后,会把网络状态写入log文件,并输出到控制台

一个小的建议,控制台输出建议原位覆盖,而非向下滚屏。可以使用ASCII的 \033 转译字符控制具体的光标位置和文字颜色等。
写了一个简单的演示程序,供参考

#include <stdio.h>
#include <iostream>
#include <Windows.h>
int main()
{
        std::cout << "aaaaaaaaaaaaaaaaaaaaaaaaa" << std::endl;
        int i = 0;
        while (true)
        {
                //使用\033控制输出位置及颜色等格式
                std::cout << "\033[s";//记录光标位置
                std::cout << "[YYYY-MM-DD HH:SS]" << std::endl;
                std::cout << "|    receive\t|    send\t|  fec\t|\tmux_tunnels\t\t|" << std::endl;
                std::cout << "|raw\t|inner\t|raw\t|....." << std::endl;
                std::cout << "Server1.conf" << std::endl;
                std::cout << "|\033[0;32m" << i << "\033[0m\t|" << i + 1 << "\t|" << i + 2 << "\t|..." << std::endl;
                std::cout << "Server1.conf" << std::endl;
                std::cout << "|\033[7;31m" << i+3 << "\033[0m\t|" << i + 4 << "\t|" << i + 5 << "\t|..." << std::endl;
                std::cout << "\033[u";//恢复光标位置
                i++;
                Sleep(1000);
        }
        return 0;
}

@cnbatch
Copy link
Owner

cnbatch commented Jun 5, 2024

单一配置文件时原位覆盖简单,多配置文件时就麻烦得多了。

程序运行的时候,每个配置都是相对独立的,输出各自的状态时若要原位覆盖,那就会覆盖掉另一个配置文件的输出。

@ywgATustcbbs
Copy link
Author

可以考虑同一个表头,然后分行输出,用\033[s跨行保存光标位置,然后\033[u跳回该位置重头覆盖,所以并不会乱,就当是每个配置文件覆盖了自己原来的那两行了。

@cnbatch
Copy link
Owner

cnbatch commented Jun 5, 2024

保存位置只能用一次,第二个调用会取代前一次的位置,毕竟不是多进程模式。这样一来就必须额外弄一个全局收集器,从各个运行着的实例当中收集数据。这样保存位置也能免了,直接清屏就行。

然而全局收集器需要单独写一个,并且不能阻碍各个实例的正常运作。只能慢慢来了。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants