永发信息网

如何获取当前Socket缓冲区中含有的字节数?

答案:1  悬赏:50  手机版
解决时间 2021-12-29 23:14
问题提出背景:
我想实现文件的等比例传输,就是以每次多少节发送就以多少字节接收。10K以下发送接收都没有问题,超过10K的话,发送正常,但接收端在处理第一个包的时候出现一个奇怪的现象:第一次接收大部分内容,剩下的会在第二次中接收,这两次接收到的恰好是发送的第一个分包内容。更奇怪的是后面的分包发送接收又正常了!

个人猜测:
第一次发送的数据在没有完全写入缓冲区前就调用了Receive接收,所以数据不全。而在刚接收完之后没有写入的数据进来了(发送端的Send并没有再次调用前),Receive再次响应将第一个分包剩下内容接收完毕。而至于后面的分包发送接收正常大概也跟时间差有关系。

所以我想到通过判断Socket缓冲区中含有的字节数来决定是否接收,这样就可以保证等比例接收了。不知道能否实现,请高人指点!
最佳答案
你用的肯定是tcp协议传的数据, tcp是数据流, 没有数据包的概念。
用recv所接收的可能是发送的“包”的一部分, 也可能是几个包合在了一块。
如果需要用数据包, 可以用udp协议, 不过可靠性会差些,如果是在局域网用udp协议再加上对包的回复确认功能是可以的。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
mistake,fault,trouble,matter怎样区别他们的
五年级(1)班有57名同学,至少有________名
重庆圆通寄东西到新疆昌吉州要多少天
静海县统计局办公地址在什么地方?我要处理点
--I’m afraid you have the wrong number.--
庄能加什么偏旁并组词
你好,我想问下农行本利丰理财中途可以赎回吗
北辰区统计局地址在什么地方?想过去办事
单选题考试前,甲同学购买黑色签字笔支付现金
昌江街道社区卫生服务中心地址有知道的么?有
为什么我咬我老婆的耳朵,她会起鸡皮疙瘩 觉
天津市津南区统计局在什么地方啊,我要处理点
我的身份证有效期是2026年10月25日,但我49岁
恒的树心旁换成木念什么
检察院裁定不支持我的抗诉申请,我还能去哪申
推荐资讯
我想要常熟理工学院的校友录名单
东来东往有什么好听的歌?推荐一下
请算命大师帮我算一生命运:男,1980年2月19
府弟、府第、府邸这三个词有区别吗,府弟有这
单选题美国拆散英日同盟的根本目的是A.削弱英
用“严”组词并填空什么地责骂,什么地批评
海南电网定安供电公司支部办公室位置在什么地
老鼠最怕听到什么声音
歌词.西北风,不会动,是那首歌。
用灿烂多姿组词并解释它的意思
单选题要解决我国社会存在的问题,需要A.国家
圆柱体周长怎么算
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?