### **TCP通信特點**
1. TCP 是流式協議沒有消息邊界,客戶端向服務器端發送一次數據,可能會被服務器端分成多次收到。客戶端向服務器端發送多少數據。服務器端可能一次全部收到。
2. 保證傳輸的可靠性,順序。
3. TCP擁有擁塞控制,所以數據包可能會延后發送。
沒有消息邊界:
可以理解為水在一個水管里的流動,我們不知道哪段數據是一個我們需要的完整數據
收發有緩沖區:
比如:當水從一端流到了另一端,我們在收數據的時候,不可能每來一滴水就處理一次,這個緩沖區就相當于有了一個水桶,再接了一定的水之后內核再給數據交到用戶空間,這樣可以大大提升性能。
## **什么是 TCP 粘包?**
TCP 粘包是指發送方發送的若干包數據?到?接收方接收時粘成一包,從接收緩沖區看,后一包數據的頭緊接著前一包數據的尾。
## **TCP 出現粘包的原因?**
TCP 粘包是指發送方發送的若干包數據?到?接收方接收時粘成一包,從接收緩沖區看,后一包數據的頭緊接著前一包數據的尾。
## **Swoole怎么處理粘包**
### **EOF 結束協議**
通過約定結束符,來確定包數據是否發送完畢
開啟open_eof_check=true,并用package_eof來設置一個完整數據結尾字符,同時設置自動拆分open_eof_split
舉個例子:

#### **注意:**
1、要保證業務數據里不能出現package_eof設置的字符,否則將導致數據錯誤了。
2、可以手動拆包,去掉open_eof_split,自行 explode("\r\n", $data),然后循環發送