接收socket数据的粘包处理

Posted mqxnongmin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了接收socket数据的粘包处理相关的知识,希望对你有一定的参考价值。

//粘包解决方法,格式<x>XXXXXXXXXXXX</x>

?? ??? ?public void readMess(String message){

?????????? //存放数据

?? ??? ??? ?data = data+message;

?? ??? ??? ?try{

???????? //循环是数据可能有多个<x>XXX</x><x>XXX</x>.................

?? ??? ??? ? while((data.indexOf("<x>")>-1) && (data.indexOf("</x>")>-1))
?? ??? ??? ? {
?? ??? ??? ??? ?int n1 = data.indexOf("<x>");
?? ??? ??? ??? ?int n2 = data.indexOf("</x>");
?? ??? ??? ??? ?String str = data.substring(n1+3, n2);
?? ??? ??? ??? ?//剩余字符
?? ??? ??? ??? ?data = data.substring(n2+4);
?? ??? ???????? //打印处理好的字符
?? ??? ??? ??? ?Log.v("readM", str);
?? ??? ??? ? }
?? ??? ??? ?}
?? ??? ??? ?catch(Exception e)
?? ??? ??? ?{
?? ??? ??? ??? ?e.printStackTrace();
?? ??? ??? ?}
?? ??? ?}

以上是关于接收socket数据的粘包处理的主要内容,如果未能解决你的问题,请参考以下文章

Socket TCP协议 实时通信的粘包处理之Java与C++实现

网络编程(socket)中的粘包处理

什么是粘包?socket 中造成粘包的原因是什么? 粘包的处理方式

Netty——解决TCP粘包、拆包

socket 的粘包问题解决方案

tcp的粘包问题