socket 接收 问题。
我服务器发送一个文件,客户端进行接收,但是客户端接收的时候,接收到得文件 比 发送的文件少 几百K 不知道是什么原因。
我select 进行检测是否可读,可读则接收,在还有最后几百K的时候,也就是最后一次recv 接收的数据比我要接收的数据小,这次接收完成后,进入到select检测,这时已经检测不到可读信息,但是文件还有 几百K 尚未接收到,
请教各位 分析原因。急求啊!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
[解决办法]
查查你服务端分割文件的代码,会不会把最后一块给漏掉了~
[解决办法]
检查下是否粘包了
[解决办法]
会不会是服务端分包的时候,自己漏了这几百K?
[解决办法]
沾包,我们不用关的!
服务端定长发送!发送的时候检查下发送的api返回值!是否都成功发送!
客户端端定长接收,api处理同服务端!
然后再抓包是否有这么多数据! 确实发送问题还是接收问题!
[解决办法]
发的文件有多大?tcp的话,recv是阻塞还是非阻塞?非阻塞的话,一次读到的数据会小于接收缓冲区的大小,需要用while抱住接受,直到返回负数