ITADN
theimpossibleastronaut/modemu2k · 文件 下载 ZIP
文件最后提交记录最后更新时间
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

C/C++ CI BSD

modemu2k

Hayes 风格 AT 命令调制解调器模拟器,将串行风格接口桥接到 TCP/Telnet(“拨出”并应答传入连接)。它以 C 库(libmodemu2k)的形式发布,暴露调制解调器状态机,外加一个构建 在其之上的小型 CLI,该 CLI 分配一个 PTY,并直接读取 stdin/stdout,在从端 fork 一个通信程序(minicom, picocom),或接受传入的 TCP 连接作为 TTY。支持 IPv4 和 IPv6。

它基于 modemu,最初由 Toru Egashira (1995–1996)开发。

维护者:Andy Alt

许可证:GNU GPL 2 或更高版本

应用程序

本项目包含 modemu2k,一个小型命令行程序,用于替代经典终端程序(如 minicom 和 picocom) 最初所针对的拨号调制解调器。你可以运行 modemu2k,将你的终端 程序指向它,并输入你在 1990 年代会输入的相同 ATD"bbs.example.com" 命令——只不过 modemu2k 将每个“拨号”命令转换为网络 (TCP/telnet)连接,而不是拨打电话号码。经典通信 程序认为它仍在与真实调制解调器通信;而你实际上是通过互联网 连接到当今的 BBS。支持 Linux 和 BSD,以及 IPv4 和 IPv6。

使用 Homebrew 安装

本仓库也是一个 Homebrew tap,适用于 macOS 和 Linuxbrew:

brew tap theimpossibleastronaut/modemu2k https://github.com/theimpossibleastronaut/modemu2k brew trust theimpossibleastronaut/modemu2k brew install modemu2k

Homebrew 不会从第三方 tap 加载 formula,除非你将该 tap 标记为受信任。brew trust 行所做的就是这一点。

Homebrew 从源码构建 modemu2k。在 macOS 上,它为只能与调制解调器通信的软件提供 telnet BBS。运行 modemu2k -s 以打印 pty,然后将模拟器指向它:

  • QEMU 或 UTM,使用 -serial pty
  • 86Box,使用串口直通
  • VICE,使用 userport RS232

Build

meson setup builddir
ninja -C builddir

运行 meson configure builddir 以查看额外选项。 ninja install 是可选的。m2k-minicom / m2k-picocom 包装脚本默认不安装;请传递 -Dhelper-scripts=true 以选择加入。

用法

请参阅 QUICKSTART.md 了解实际操作指南:独立 模式、在 minicom 下运行、监听模式、用于 文件传输的二进制模式切换、使用 +++ 进行转义,以及干净地退出。

modemu2k(1) 手册页包含完整的选项和 AT 命令参考。

BBS 相关

一些 BBS 可能也支持 ssh 或其他协议;如果您想了解更多 信息,请在浏览器中查找(许多都有 www 门户)。

致谢

modemu2k.h 中的多个库 API 约定是仿照 成熟的 C 库设计的——是模式,而非代码:

  • libcurl — 由调用方提供的详细 错误缓冲区(m2k_set_error_buffer 镜像 CURLOPT_ERRORBUFFER), strerror 风格的代码到消息辅助函数,日志回调模式 (CURLOPT_DEBUGFUNCTION),以及 m2k_runm2k_step 之间的阻塞/非阻塞划分 (curl 的 easy 与 multi 接口)。
  • libuv / libcurl / libssh2M2K_API 可见性/导出 宏(镜像 UV_EXTERN / CURL_EXTERN / LIBSSH2_API),用于 Windows DLL 支持和 ELF 可见性加固。
  • SQLite / libssh2 — 版本化头文件(宏)
    • 运行时 m2k_version() 用于检测头文件/库版本偏差。
  • libssh2M2K_ERR_WOULDBLOCK 非阻塞流控制的返回码(镜像 LIBSSH2_ERROR_EAGAIN),以区分流控制与硬 错误。