总结
本文我们讲了 TCP 粘包和半包问题,粘包是指读取到了两条信息,正常情况下消息应该是一条一条读取的,而半包问题是指读取了一半信息。导致粘包和半包的原因是 TCP 的传输是以流的形式进行的,而流数据是没有明确的开始和结尾标识的,因此就导致了此问题。
本文我们提供了 3 种粘包和半包的解决方案,其中最推荐的是使用 BufferedReader
和 BufferedWriter
按行来读、写和区分消息,也就是本文的第三种解决方案。
参考 & 鸣谢
https://zhuanlan.zhihu.com/p/126279630