紧急求助socket通信过程中的缓冲覆盖问题---分用完了,下次补,拜托!!!

terrace 2003-08-22 01:24:51
我做了基于TCP/IP下socket通信的客户端,服务器端发包速度非常快(一条记录为一包,一次发一包,通常我所收到的返回包为几千个,即几千条记录),但我又无法控制服务器也不能要求它放慢速度,只能在我这接收方来想办法处理,且包是以结构的形式发的,即不全是字符,可能会在结构中包含integer型,这样就无法用ReceiveText来接收,只能用ReceiveBuf函数(通信方式是非阻塞的),我在处理的过程中发现有坏包,很可能是速度太快而发生了数据覆盖。该怎么对付这种情况呢?
另外,socket的缓冲区大小是多少呢?在哪里设置?最大可设为多少?
...全文
36 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
quietosea 2003-10-22
  • 打赏
  • 举报
回复
socket的缓冲区大小是4096,TCP是安全的,不会产生数据覆盖。
linqiang_46 2003-08-23
  • 打赏
  • 举报
回复
你的一个包的数据有多大,要是只有一k就肯定没有问题,socket的缓冲是4k
zj_jun 2003-08-22
  • 打赏
  • 举报
回复
既然你是用TCP协议的话,应该就不会是数据覆盖问题啊,如果你用的是UDP的话建议你转用TCP因为你要考虑数据的完整性,所以最好在通信双方增加一些检验和校验之类的检测

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧