vb连续sendData时出现的问题

vb连续sendData时出现的问题

最近我编了一个局域网发送文件的小程序
使用TCP协议
思路如下:
客户端要求发送,服务器端以byte形式读取文件,并开始发送第一个数据段(4K),客户端接到数据段,写入文件,然后发送一个nextB字符串,要求服务器端发送下一个数据段。
服务器端发现byte全部发送完毕,会发送一个‘the end’数据,这时文件发送完成了。
我编写好代码后,客户端能够接收到数据,可是接收到1M左右就不能继续接收下去了。
于是我通过调试发现,原来我的程序在发送"nextB"的时候,会连在一起发送。得到的结果就是"nextBnextB"。
通过查阅网上的资料得到下面的回答:
VB通过socket连续发送数据会有一个累积效应,累积到一定次数,会收到的出错的数据,其有一下规律。

  • 曾经使用1200字节发送,大概累积发送8M数据就出错了。
  • 每次发送的字节数越多,引发累积造成错误的次数也越小。
  • 当我调到每次发送1000字节时,未再观察到出错。

有时候发送了2个用户包,而对方却收到了1个用户包,因为连续的senddata,在socket线程的一个检测周期就向socket的buf放了2批数据,当然他认为是1批啊,他会拆分成1500一个ip包(以太网的MTU,最大传送单元),在对方的socket线程里面,他在一个检测周期发现了数据于是做一个包触发一个事件给vb一个通知,不过这里面还多了个判断而已,就是如果这个包太大了࿰

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值