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错误,
...全文
339 1 打赏 收藏 举报
写回复
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
kwer 2015-08-27
  • 打赏
  • 举报
回复
http://download.csdn.net/detail/kwer/9050123
发帖
网络及通讯开发

1311

社区成员

C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
帖子事件
创建了帖子
2014-05-19 07:49
社区公告
暂无公告