结论:

> Socket 理论上 支持 只上行,或者 只下行。

> 心跳包 必须是 上下行的 —— 心跳包请求(上行) - 心跳包响应(下行)。

> 如果 长时间 只有单向链接(只发送不接受,或者 只接受不发送) —— 路由器 就会 丢弃 Socket数据。

> 心跳包 不是 必须的 —— 任意 上下行组合 都能 维持 Socket 所需的 软件(操作系统、程序)、硬件(电脑、路由器,手机基站)的 有效性。

相关链接:

http://www.cnblogs.com/lcw/p/3565459.html

案例:

> 手机通过 Socket 分片段 发送 100M 的文件(上行,只发送,不接受),平均耗时 3~5 分钟。

> 偶发异常:服务器接收的数据 突然丢失。

> 如果 在文件 每发送一个片段后,反向发送 几个空字节(下行) —— 偶发异常消失。

04-27 17:42