1
0
mirror of https://github.com/NevermindZZT/letter-shell.git synced 2025-01-21 10:02:54 +08:00

telnet

version standard build license

基于letter shell运行的telnet

简介

telnet是基于letter shell运行的一个telnet服务端可以在一些具有网络能力的嵌入式环境中使用特别适用于现场不方便接线条件下的调试工作telnet默认运行在23端口可以在telnetd.h文件中进行配置,也可以在启动服务前,调用telnetdSetPort进行修改注意23端口可能会被系统占用

使用

  1. 修改包含的头文件

    telnet使用标准的socket接口实现运行此telnet实现需要你的运行环境具有socket接口使用时需要首先确认你的运行环境中提供标准socket的头文件然后替换telnetd.c文件中包含的头文件

    #include "sys/socket.h"
    #include "arpa/inet.h"
    #include "netinet/in.h"
    
  2. 实现线程接口

    telnet的运行需要多任务支持你选哟提供一个用于创建新线程的接口下面是在linux环境下的示例

    /**
     * @brief 新线程接口
     * 
     * @param handler 线程函数
     * @param param 线程参数
     * 
     * @return int 0 启动成功 -1 启动失败
     */
    int userNewThread(void *handler, void *param)
    {
        pthread_t tid;
    
        return pthread_create(&tid, NULL, handler, param) == 0 ? 0 : -1;
    }
    
  3. 初始化

    telnetdInit(userNewThread);
    
  4. 启动

    直接调用telnetdStart函数或者在shell执行telnetd start命令启动telent server

其他

  • 只支持一个客户端连接

    做telnet这个功能的时候发现letter shell目前提供的接口不好在telnet上做多客户端支持遂暂时只支持一个客户端连接

  • 部分shell功能不可用

    目前的telent实现没有实现letter shell的read接口,所以部分依赖于此接口的功能,比如说shellScan都是不可用的

  • 使用telent需要开启letter shell的伴生对象功能

  • 性能优化

    对于资源紧张的单片机telnet频繁的网络操作可能会对系统性能产生压力此时建议优化telentd.c中的telnetdWrite函数,可以使用环形缓冲区,每次此接口写入的数据不直接调用send函数,而是写入缓冲区,然后定时(100ms左右)调用send函数清空缓冲区

  • x86 demo

    x86 demo中实现了telnet的接口可以直接运行试用

    letter:/$ telnetd setPort 4545
    letter:/$ telnetd start