请问各位大哥有没有知道creation_zy大哥的通信方法,谢谢回复 请问各位大哥有没有知道creation_zy大哥的通信方法,谢谢回复email、qq、msn都行 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 reallike认识?我怎么没啥印象? http://search.csdn.net/Expert/topic/671/671232.xml?temp=.1001551 这个email可能没有用处,我知道这个 回复人: forgot2000(忘记2000年) ( ) 信誉:95 2002-04-24 08:53:44Z 得分:100 确实是这样,Socket程序如果一端连续发送的数据很多,在另一端很容易出现两个包接在一起,或者包里面的数据丢失一部分的情况,也就是说,在大数据量的Socket发送接收过程中缓冲区溢出是经常发生而且很难解决的问题。我之前看过一篇帖子,有位朋友说自定义高层协议,他简单地说了一下他的思路,我转帖如下,希望对你有帮助:数据包结构:(以Byte为单位) 0:信息标志位,必须为非零值 1-4:信息正文长度,DWORD类型 5-:信息正文 接收方应该使用两个缓冲区(必须足够大——我用的是16K),同一时刻只能有一个缓冲区处于写状态,而另一个缓冲区则必须处于读状态。一旦读缓冲区的信息被处理完毕,就交换两个缓冲区的角色,实现流水工作。在实际操作是要注意绝对不能同时读写同一个缓冲区。 每个缓冲区有两个指针——读指针与写指针,写指针总是指向接收缓冲区有效信息的末端,在读取时,要注意使读指针不能超过写指针。 每次Socket接收到一个Socket包,并不要急于处理它们,而是将其写入到接收缓冲区的末端。 信息读取线程针对读缓冲区进行信息读取。根据上面的信息包结构,很容易得到信息的读取方法:1.判断读指针指与写指针是否重合,如重合,则说明信息已经读取完毕,读取过程结束,进行进行缓冲区交换,再次进行读取操作。2.判断读指针指向的Byte是否为0,若为零,则说明读指针之后不再有信息(要做到这一点,接收缓冲区在进行写操作之前必须初始化为全零),读取过程结束,其余操作同上。3.将读指针加1,读取信息包中的正文长度信息。并根据正文长度将正文信息读取到相应的临时缓冲区中去,调用相应的信息处理过程对其进行处理。在处理完毕之后,将读指针置于正文信息之后,转到过程1。你可以发信给[email protected],详细地问问他的解决方法。 晕看来真是很早以前的老大了……怪不得不认识 结束监听线程,程序就假死 FTP文件备份功能开发 关于showmessage()函数 有什么办法可以提高 ShellExecute(0, 'open', 'IEXPLORE.EXE',……) 打开网页的速度?? 这样的fastreport的条件怎么写? 虚心向大家学习,这两个类怎么实现的?讨论一下 xe 下的触控图片旋转缩放问题 过程与函数的调用约定 千两狂死郎,请进! 关于三层结构数据保存问题 tClientDataSet如何排序?似乎没有类似TAdoDataSet.sort的属性 愤怒!印尼媒体诬中方救灾食品过期。
确实是这样,Socket程序如果一端连续发送的数据很多,在另一端很容易出现两个包接在一起,或者包里面的数据丢失一部分的情况,也就是说,在大数据量的Socket发送接收过程中缓冲区溢出是经常发生而且很难解决的问题。我之前看过一篇帖子,有位朋友说自定义高层协议,他简单地说了一下他的思路,我转帖如下,希望对你有帮助:
数据包结构:(以Byte为单位)
0:信息标志位,必须为非零值
1-4:信息正文长度,DWORD类型
5-:信息正文
接收方应该使用两个缓冲区(必须足够大——我用的是16K),同一时刻只能有一个缓冲区处于
写状态,而另一个缓冲区则必须处于读状态。一旦读缓冲区的信息被处理完毕,就交换两个缓冲区
的角色,实现流水工作。在实际操作是要注意绝对不能同时读写同一个缓冲区。
每个缓冲区有两个指针——读指针与写指针,写指针总是指向接收缓冲区有效信息的末端,在
读取时,要注意使读指针不能超过写指针。
每次Socket接收到一个Socket包,并不要急于处理它们,而是将其写入到接收缓冲区的末端。
信息读取线程针对读缓冲区进行信息读取。根据上面的信息包结构,很容易得到信息的读取方法:
1.判断读指针指与写指针是否重合,如重合,则说明信息已经读取完毕,读取过程结束,进行进行
缓冲区交换,再次进行读取操作。
2.判断读指针指向的Byte是否为0,若为零,则说明读指针之后不再有信息(要做到这一点,接收
缓冲区在进行写操作之前必须初始化为全零),读取过程结束,其余操作同上。
3.将读指针加1,读取信息包中的正文长度信息。并根据正文长度将正文信息读取到相应的临时缓冲
区中去,调用相应的信息处理过程对其进行处理。在处理完毕之后,将读指针置于正文信息之后,
转到过程1。你可以发信给[email protected],详细地问问他的解决方法。
晕
看来真是很早以前的老大了……
怪不得不认识