网络程序测试技巧

最近公司开发一个P2P的网络程序,客户端连上服务端后,调用读socket函数返回0,这个表示对方socket断开。这个程序服务和客户端都是用libevent实现的,服务端是公网IP,是在Linux下运行,客户端是私有IP,运行在Windows。

刚开始总以为libevent内部存在问题,因为我们是用bufferevent实现的,也怀疑过是不是公司的路由器有问题。客户端和服务端都有日志,但是从日志里都看不出什么问题,搞了一天半这个问题都没有解决,后来我建议先在局域网内进行代码调试,马上就发现问题了,原来客户端发了个不认识协议,服务器就崩溃了,然后又重启了一个子进程,导致客户端重连,但是服务端有没有打印相关的日志,导致不能很快地发现问题,通过一个代码调试马上就发现问题了。

总结,看来找问题要先把问题域缩小(从公网到局域网),然后跟踪代码调试,会很快发现问题,而日志也不是万能的。

你可能感兴趣的:(测试)