C++Socket传输二进制文件问题,求高手解答啊
客户端只发送图片,服务端只接收图片,则毫无问题。现在要客户端发送图片,服务端接收图片,然后服务端将接受的图片在发送到客户端。这样就有问题了,服务端接到了图片,但是客户端接到的图片没有内容。部分代码如下,求高手指点啊~
客户端:
ifstream in("C:\\send.bmp",fstream::in|fstream::binary);
char buf1[1024]={0};
while(!in.eof())//如果没有到达文件末尾则继续
{
in.read(buf1,sizeof(buf1));
ret=send(clientSocket,buf1,1024,0);
if(ret==SOCKET_ERROR)
{
cout<<"Send Into error: "<<GetLastError()<<endl;
return -1;
}
}
in.close();
cout<<"文件发送完毕"<<endl;
ofstream out("C:\\accept.bmp",fstream::out|fstream::binary);
char buf2[1024]={0};
ret=1;
while (ret>0)
{
ret=recv(clientSocket,buf2,1024,0);
out.write(buf2,sizeof(char)*ret);
}
out.close();
cout<<"文件接受完毕!"<<endl;
closesocket(clientSocket);
服务端:
ofstream out("E:\\accept.bmp",fstream::out|fstream::binary);
char buf1[1024]={0};
ret=1;
while (ret>0)
{
ret=recv(clientSocket,buf1,1024,0);
out.write(buf1,sizeof(char)*ret);
}
out.close();
cout<<"文件接受完毕!"<<endl;
ifstream in("E:\\accept.bmp",fstream::in|fstream::binary);
char buf2[1024]={0};
while(!in.eof())//如果没有到达文件末尾则继续
{
in.read(buf2,sizeof(buf2));
ret=send(clientSocket,buf2,1024,0);
if(ret==SOCKET_ERROR)
{
cout<<"Send Into error: "<<GetLastError()<<endl;
return -1;
}
}
in.close();
cout<<"文件发送完毕"<<endl;
closesocket(clientSocket);
closesocket(serverSocket);