UNIX网络编程个人学习心得总结

2560阅读 0评论2014-12-02 cqw_cu_
分类:LINUX

最近看到项目组有一个问题单,是关于TCP通信的。

 

项目背景:私有云项目,大体涉及三个端。控制端C,可理解为手机APP;设备端B,可理解为家里的智能热水器;服务器A,可理解为把控制端C的指令,如烧水指令发送到设备端B的中转站。

 

问题描述:服务器A和设备B通过TCP进行通信,测试人员说在用控制端通过服务器A向设备B发指令后,把服务器A和设备B之间的网线拔了,设备B没有执行服务器A的指令。

 

解释:设备B的开发人员说没有收到服务器A的指令,服务器A的开发人员说指令已经发了,因为send没有返回错误信息。

 

问题:这条消息到哪儿去了?这到底算哪个端的bug

 

明眼人一看就知道这应该算服务器端Abug,因为它并没有检测TCP连接的对端是否掉电或者断网,没有处理这种异常。

 

这里分享一下我个人学习网络编程的心得和总结。

 

1. 需要静心看书

理论推荐看《TCP/IP 详解 卷一》,编程接口推荐看《UNIX网络编程 卷一》,以我个人的感受来说,二者缺一不可,需要交叉着阅读和思考。比如三次握手,理论看《TCP/IP 详解 卷一》,编程接口看《UNIX网络编程 卷一》,三次握手对应那些系统调用,何时表示三次握手已经建立。

2. 需要多动手实践

写代码没有什么捷径,多读,多思考,多动手。

上一篇:Linux创建虚拟块设备操作指南
下一篇:strcpy的四种实现方法