发布一个 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。

你可能感兴趣的:(编程,C++,c,git,C#)