結論:
> Socket 理論上 支持 只上行,或者 只下行。
> 心跳包 必須是 上下行的 —— 心跳包請求(上行) - 心跳包響應(下行)。
> 如果 長時間 只有單向鏈接(只發送不接受,或者 只接受不發送) —— 路由器 就會 丟棄 Socket數據。
> 心跳包 不是 必須的 —— 任意 上下行組合 都能 維持 Socket 所需的 軟件(操作系統、程序)、硬件(電腦、路由器,手機基站)的 有效性。
相關鏈接:
http://www.cnblogs.com/lcw/p/3565459.html
案例:
> 手機通過 Socket 分片段 發送 100M 的文件(上行,只發送,不接受),平均耗時 3~5 分鐘。
> 偶發異常:服務器接收的數據 突然丟失。
> 如果 在文件 每發送一個片段後,反向發送 幾個空字節(下行) —— 偶發異常消失。