在tcp網絡通信中會出現tcp粘包和拆包問題。
爲了保證發送的消息的正確性,到客戶端接收到之後,會按照順序進行粘包和拆包處理。
例如:當服務端向客戶端通過tcp發送五條消息之後,客戶端其實並不知道收到的消息是五條還是一條。
創建項目
在原項目基礎上修改;
去掉服務端的編解碼處理器,留一個自定義處理器
這樣的話傳入的類型就是bytebuf了
轉換成字符串,並且打印出來
打印服務端接收客戶端請求消息數量
創建一個bytebuf,響應客戶端消息
編寫客戶端,結構也是同樣的,去掉其他編解碼處理器,只留下自定義處理器
運行客戶端和服務端
服務端
在服務端這邊接收到客戶端發送過來的數據,直接把他們全部認爲是一條數據進行處理
按照正常邏輯客戶端向服務端發送10次信息,那麼返回回來應該也是10次消息,但是根據打印的情況來看並沒有出現10次,而是一次。這就出現了粘包問題
然後我們繼續多啓動幾次客戶端出現以下問題
我們在初始化處理器那裏打印一下,看是否每次連接都會調用
重啓之後我們可以看到 對象是同一個對象,但是方法會重新被調用。