TCP粘包问题
来源:互联网 发布:电能量数据采集终端 编辑:程序博客网 时间:2024/04/27 20:51
最近需要用TCP传输大量数据,但是中间出现了一些问题。
又问本人菜鸟,什么都是自己摸索!
其中就出现了粘包问题。
粘包问题可以看看下面的链接,下面讲解的很详细
粘包问题链接:点击打开链接
而我发送的大量数据包,每次发送的长度不相等。
微软对TCP发送的数据优化算法还是有用的,可以不需要设置“发送不延迟”。
所以就在每次发送数据包的开头定义一个定长大小的结构体,里面描述一些信息,当然最重要的信息就是此次发送数据包的长度。
//定义接受压缩图片的信息 typedef struct bmpheader{int indexBitmap; //图片索引号int x , y ; //图片的 横向、纵向 块号int nLength ; //块压缩之后的大小int nSum ; //计数块int nDisplay ;}BMPHEADER , *pBMPHEADER;
可以采用上面的结构体来定义数据包头。
然后接收端执行下面的代码:
//接受数据void sockRecv( char* recvdata , int len ){int lentotal = 0 ;int lenrecv = 0 ;while ( lentotal < len ){lenrecv = recv( SockClient , recvdata+lentotal , len - lentotal , 0 );lentotal += lenrecv ;}}
sockRecv( (char*)&memBlock.recbmpheader , sizeof( BMPHEADER ) );//接受数据包头sockRecv( (char*)&memBlock.mem , memBlock.recbmpheader.nLength );//接受接受数据大小
- TCP粘包问题
- TCP粘包问题
- TCP粘包问题
- TCP粘包问题
- tcp 粘包问题
- tcp 粘包问题
- TCP粘包问题
- TCP 粘包问题
- tcp 粘包问题
- TCP粘包问题
- tcp粘包问题
- TCP粘包问题
- TCP粘包问题
- TCP 粘包问题
- TCP 粘包问题
- tcp粘包问题
- TCP粘包问题
- TCP/IP-----------tcp粘包问题
- 基于S3C2440的Linux内核移植和yaffs2文件系统制作--编译内核
- js(六)
- C#程序设计(二十七)----创建一个如下的窗体,并在窗体上放置一个标签、一个treeviw控件
- U C 编译器简介
- js(四)
- TCP粘包问题
- 走向开源代码分析第一步,准备,思路和方法小结
- Linux系统下定时关机命令shutdown
- GDB
- android Thread/Handler 实现
- 迷宫问题BFS暴搜
- 网络程序中常用的头文件
- C#程序设计(二十八)----菜单与工具栏
- java获取项目路径