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