Netty的深入淺出--87.TCP粘包和拆包簡單實例(上)

在tcp網絡通信中會出現tcp粘包和拆包問題。

爲了保證發送的消息的正確性,到客戶端接收到之後,會按照順序進行粘包和拆包處理。

例如:當服務端向客戶端通過tcp發送五條消息之後,客戶端其實並不知道收到的消息是五條還是一條。

創建項目

在原項目基礎上修改;

去掉服務端的編解碼處理器,留一個自定義處理器

這樣的話傳入的類型就是bytebuf了

轉換成字符串,並且打印出來

打印服務端接收客戶端請求消息數量

創建一個bytebuf,響應客戶端消息

編寫客戶端,結構也是同樣的,去掉其他編解碼處理器,只留下自定義處理器

 運行客戶端和服務端

服務端

在服務端這邊接收到客戶端發送過來的數據,直接把他們全部認爲是一條數據進行處理

按照正常邏輯客戶端向服務端發送10次信息,那麼返回回來應該也是10次消息,但是根據打印的情況來看並沒有出現10次,而是一次。這就出現了粘包問題

 然後我們繼續多啓動幾次客戶端出現以下問題

我們在初始化處理器那裏打印一下,看是否每次連接都會調用

重啓之後我們可以看到 對象是同一個對象,但是方法會重新被調用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章