结论:
> Socket 理论上 支持 只上行,或者 只下行。
> 心跳包 必须是 上下行的 —— 心跳包请求(上行) - 心跳包响应(下行)。
> 如果 长时间 只有单向链接(只发送不接受,或者 只接受不发送) —— 路由器 就会 丢弃 Socket数据。
> 心跳包 不是 必须的 —— 任意 上下行组合 都能 维持 Socket 所需的 软件(操作系统、程序)、硬件(电脑、路由器,手机基站)的 有效性。
相关链接:
http://www.cnblogs.com/lcw/p/3565459.html
案例:
> 手机通过 Socket 分片段 发送 100M 的文件(上行,只发送,不接受),平均耗时 3~5 分钟。
> 偶发异常:服务器接收的数据 突然丢失。
> 如果 在文件 每发送一个片段后,反向发送 几个空字节(下行) —— 偶发异常消失。