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 门户)。
- The Rusty Mailbox — trmb.ca 2030
- Synchronet BBS List — 一个 当前可访问的 telnet BBS 目录
- The BBS Corner
致谢
modemu2k.h 中的多个库 API 约定是仿照
成熟的 C 库设计的——是模式,而非代码:
- libcurl — 由调用方提供的详细
错误缓冲区(
m2k_set_error_buffer镜像CURLOPT_ERRORBUFFER),strerror风格的代码到消息辅助函数,日志回调模式 (CURLOPT_DEBUGFUNCTION),以及m2k_run和m2k_step之间的阻塞/非阻塞划分 (curl 的 easy 与 multi 接口)。 - libuv / libcurl /
libssh2 —
M2K_API可见性/导出 宏(镜像UV_EXTERN/CURL_EXTERN/LIBSSH2_API),用于 Windows DLL 支持和 ELF 可见性加固。 - SQLite /
libssh2 — 版本化头文件(宏)
- 运行时
m2k_version()用于检测头文件/库版本偏差。
- 运行时
- libssh2 —
M2K_ERR_WOULDBLOCK非阻塞流控制的返回码(镜像LIBSSH2_ERROR_EAGAIN),以区分流控制与硬 错误。