一个 Sockets 编程的交互式试验工具
时间:2010-06-03 来源:存款可视化
一个 Sockets 编程的交互式试验工具
学习 Sockets 网络编程的时候往往要写很多小程序来熟悉 api,触发各种时序,观察系统的行为。
最近在编写自己的 C++ 网络库,需要考察许多场景下 Sockets 系统调用的返回值。于是我写了一个简单的命令行交互式工具,用来手动触发各种边界条件。这让我能方便地观察系统的行为。
编译方法:
先安装 libreadline-dev
$ sudo apt-get install libreadline-dev
然后获取源代码
$ git clone git://github.com/chenshuo/tempest.git
$ cd tempest
$ make
运行方法:
打开两个命令行窗口,一个接受 TCP 连接,另一个发起 TCP 连接。
# 在 2000 端口侦听连接
$ ./tempest -s
# 连接到服务器
$ ./tempest 10.0.0.6
然后就可以在命令行控制程序行为,例如
? - 获得帮助
r - 读
w - 写 1 字节
p - 轮询,默认立即返回,可以跟秒数为参数
st - 显示 Sockets 状态
c - 关闭连接
nb - 设置非阻塞读写
回车 - 重复上一命令
上下键 - 查看命令历史
以上是不完全列表,可键入 ? 来获得完整命令列表。
我通常会在两个窗口之间来回切换,按自己设想的顺序操纵事件的发生。
这两个窗口不一定都是 tempest,其中一个可以是 nc,或者 telnet。
必要的话,还可以再打开两个命令行窗口,一个看 tcpdump,另一个看 strace。