首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

TCP粘包有关问题

2012-11-22 
TCP粘包问题最近需要用TCP传输大量数据,但是中间出现了一些问题。又问本人菜鸟,什么都是自己摸索!其中就出

TCP粘包问题

最近需要用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 );//接受接受数据大小


 

 

 

 

 

 

 

 

 

 

热点排行