Heim > Fragen und Antworten > Hauptteil
巴扎黑2017-04-18 10:38:57
你处理TCP粘包问题了吗?
既然是TCP就不得不考虑粘包
的问题。粘包
问题不解决的话,你没办法确定哪些字节才是一个包的开头4个字节。
简言之就是,你收到一大堆字节,然后这些字节的来源可能如下:
两三个包的所有字节一起发过来
前一个包的后半部分和后一个包的前半部分字节一起发过来
总之,就是半包或者粘包的混合
我们用的是netty
,tcp粘包的问题,这里有一个很好阐述和基于netty
的解决方案:https://my.oschina.net/andylu...
巴扎黑2017-04-18 10:38:57
这属于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了,不需要在抓包上钻牛角尖.
希望能帮到你~