socket传输文件
Mu_Gu 2014-05-19 07:49:33 接收端:
for(int i = 0;i < PngBig/MAX_SENDLEN+1;++i){
if((PngBig - count) >= MAX_SENDLEN)
{
recvint = recv(accsocket,p,MAX_SENDLEN,0);
fwrite(p,MAX_SENDLEN,1,fp);
}
else
{
char *pl = new char[PngBig%MAX_SENDLEN];
recvint = recv(accsocket,pl,(PngBig - count),0);
fwrite(pl,(PngBig - count),1,fp);
delete pl;
}
if(recvint <= 0 )
printf("error");
count += recvint;
}
发送端:
for(int i = 0;i < PngBig/MAX_SENDLEN+1;++i){
fseek(fp,i*MAX_SENDLEN,SEEK_SET);
if(PngBig - count >MAX_SENDLEN)
fread(p,MAX_SENDLEN,1,fp);
else
{int readint = fread(pl,PngBig - count,1,fp);
if(readint == 0) printf("Error");
else printf(" %d\n",readint);}
if((PngBig - count) >= MAX_SENDLEN)
sendint = send(sock,p,MAX_SENDLEN,0);
else
sendint = send(sock,pl,(PngBig-count),0);
if(sendint == SOCKET_ERROR)
printf("%d %d\n",WSAGetLastError(),i);
count += sendint;
}
老是有问题,图像接收不完整,老是会少一个MAX_SENDLEN,(貌似不是一个recv少收,是很多个recv一共加起来少收了MAX_SENDLEN)或者send端接收10054.10053错误,