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

socket 接收 有关问题

2014-01-19 
socket 接收 问题。我服务器发送一个文件,客户端进行接收,但是客户端接收的时候,接收到得文件 比 发送的文

socket 接收 问题。
我服务器发送一个文件,客户端进行接收,但是客户端接收的时候,接收到得文件 比 发送的文件少 几百K  不知道是什么原因。

我select 进行检测是否可读,可读则接收,在还有最后几百K的时候,也就是最后一次recv 接收的数据比我要接收的数据小,这次接收完成后,进入到select检测,这时已经检测不到可读信息,但是文件还有 几百K 尚未接收到,



请教各位 分析原因。急求啊!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
[解决办法]
查查你服务端分割文件的代码,会不会把最后一块给漏掉了~
[解决办法]
检查下是否粘包了
[解决办法]
会不会是服务端分包的时候,自己漏了这几百K?
[解决办法]

引用:
Quote: 引用:

检查下是否粘包了


粘包 ? 是指 ? 


沾包,我们不用关的!

服务端定长发送!发送的时候检查下发送的api返回值!是否都成功发送!
客户端端定长接收,api处理同服务端!
然后再抓包是否有这么多数据! 确实发送问题还是接收问题!
[解决办法]
发的文件有多大?tcp的话,recv是阻塞还是非阻塞?非阻塞的话,一次读到的数据会小于接收缓冲区的大小,需要用while抱住接受,直到返回负数

热点排行