Chinaunix首页 | 论坛 | 博客
  • 博客访问: 109473
  • 博文数量: 12
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 244
  • 用 户 组: 普通用户
  • 注册时间: 2014-12-02 11:07
个人简介

联系方式:825988516@qq.com 业精于勤荒于嬉 行成于思毁于随

文章分类
文章存档

2014年(12)

我的朋友

分类: LINUX

2014-12-02 17:47:38

最近看到项目组有一个问题单,是关于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. 需要多动手实践

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

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