Chinaunix首页 | 论坛 | 博客
  • 博客访问: 34297
  • 博文数量: 10
  • 博客积分: 400
  • 博客等级: 下士
  • 技术积分: 91
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-09 00:03
文章分类

全部博文(10)

文章存档

2010年(10)

我的朋友

分类: C/C++

2010-06-03 01:00:37


一个 Sockets 编程的交互式试验工具

学习 Sockets 网络编程的时候往往要写很多小程序来熟悉 api,触发各种时序,观察系统的行为。

最近在编写自己的 C++ 网络库,需要考察许多场景下 Sockets 系统调用的返回值。于是我写了一个简单的命令行交互式工具,用来手动触发各种边界条件。这让我能方便地观察系统的行为。

编译方法:

先安装 libreadline-dev

$ sudo apt-get install libreadline-dev

然后获取源代码

$ git clone

$ 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。

阅读(336) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~