纠结,TCP传文件的有关问题.来看看吧

纠结,TCP传文件的问题......高手进来看看吧
想写个飞鸽,现在能聊天,但传不了文件..经过测试,发现是接收文件的函数问题.(我把发送函数送出去的数据写到一文件里,结果是要发送的那个文件,所以是好的).

char buff[1024];
clientSock = accept(fileSock,(SOCKADDR*)&addr,&addrlen);
while( (i=recv(clientSock,buff,sizeof(buff),0)) !=0 ){
fwrite(buff,i,1,fp);
}

fclose(fp);
shutdown(client,0);


以上代码有什么问题吗??好奇怪的是很小的文件最大几K吧,他能正常接收,但大一点的几M的就接收不正常,总比原来的那个要大.
当发送超过100M的文件时,收到的文件足足有200M...

我觉得我是不了解recv这函数吧,不知道我这样调用有没有问题

------解决方案--------------------
可能是发生丢包了,数据重传导致读取的多了。你让发送端一次发送的数据量小一点试试。