84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
光阴似箭催人老,日月如移越少年。
你處理TCP黏包問題了嗎? 既然是TCP就得考慮粘包的问题。粘包問題不解決的話,你沒辦法確定哪些位元組才是一個包的開頭4個位元組。
粘包
簡言之就是,你收到一大堆字節,然後這些字節的來源可能如下:
兩三個包的所有位元組一起寄過來
前一個包包的後半部和後一個包包的前半部位元組一起寄過來
總之,就是半包或黏包的混合
我們用的是netty,tcp粘包的问题,这里有一个很好阐述和基于netty的解決方案:https://my.oschina.net/andylu...
netty
不抓包在直接在java裡面input流讀出來是什麼?
這屬於socket通訊包頭問題,我之前的專案是這麼處理的,程式碼段如下:
send(String url, int port, String content){ Socket socket = null; OutputStream out = null; DataOutputStream dataOutputStream = null; try { socket = new Socket(url, port); out = socket.getOutputStream(); dataOutputStream = new DataOutputStream(out); dataOutputStream.writeInt(content.getBytes().length); dataOutputStream.write(content.getBytes()); dataOutputStream.flush(); ... } }
建議寫一個接收socket來Debug調試,抓包工具沒用過.或者和對方聯調,對方能收到並成功解析就OK了,不需要在抓包上鑽牛角尖. 希望能幫到你~
調用flush了沒?
你處理TCP黏包問題了嗎?
既然是TCP就得考慮
粘包
的问题。粘包
問題不解決的話,你沒辦法確定哪些位元組才是一個包的開頭4個位元組。簡言之就是,你收到一大堆字節,然後這些字節的來源可能如下:
兩三個包的所有位元組一起寄過來
前一個包包的後半部和後一個包包的前半部位元組一起寄過來
總之,就是半包或黏包的混合
我們用的是
netty
,tcp粘包的问题,这里有一个很好阐述和基于netty
的解決方案:https://my.oschina.net/andylu...不抓包在直接在java裡面input流讀出來是什麼?
這屬於socket通訊包頭問題,我之前的專案是這麼處理的,程式碼段如下:
建議寫一個接收socket來Debug調試,抓包工具沒用過.或者和對方聯調,對方能收到並成功解析就OK了,不需要在抓包上鑽牛角尖.
希望能幫到你~
調用flush了沒?