level 12
神搓搓的小蜜蜂
楼主
新人刚接触socket,现在想建立一个程序可以相互传送文件,server端是收文件的,现在对recv这个地方有点不理解:我的代码是
char buffer[500000]
recv(int res=recv(fd,buffer,sizeof(buffer),0);
然后试着传文件,先传了个只有42type的txt文件,没什么问题,
然后是这传一个3486type的txt文件,发现只能接收1260,就终止了,继续把recv改为
int res=recv(fd,buffer,sizeof(buffer),MSG_WAITALL);
传文件就发现程序卡住不动,然后关闭client端,发现文件已经上传,我个人的理解是MSG_WATIALL要等到500000字节的buffer都有内容才会接受完成.
所以请问一下怎么样才能全部接收3486字节,但又不会要等buffer全部塞满才传?
2014年02月19日 12点02分
1
char buffer[500000]
recv(int res=recv(fd,buffer,sizeof(buffer),0);
然后试着传文件,先传了个只有42type的txt文件,没什么问题,
然后是这传一个3486type的txt文件,发现只能接收1260,就终止了,继续把recv改为
int res=recv(fd,buffer,sizeof(buffer),MSG_WAITALL);
传文件就发现程序卡住不动,然后关闭client端,发现文件已经上传,我个人的理解是MSG_WATIALL要等到500000字节的buffer都有内容才会接受完成.
所以请问一下怎么样才能全部接收3486字节,但又不会要等buffer全部塞满才传?