光阴似箭催人老,日月如移越少年。
你處理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了沒?