基于tcp怎样传输一个二进制(exe)文件?
我写了一个文件传输的程序,基于tcp,发送一般的文本文件没有问题,但是发送二进制文件却有问题,我是基于二进制文件发送的,发送端没有问题,主要是接收的问题,接收的数据中间所有'\0'字节都丢失了,请问大家是如何搞定的。
/////////////////////////////////////////////////////////////////////
char msg[BYTEMAXLEN];
f=fopen(filename,"rb");
while (f!=NULL && !feof(f)) //发送
{
l=fread((void*)msg,1,BYTEMAXLEN,f);
if (l!=BYTEMAXLEN) msg[l]='\0';
send(client,msg,strlen(msg),0);
}
send(client,"^&*",3,0);
fclose(f);
/////////////////////////////////////////////////////////////////////
f=fopen(filename,"wb");
while (true) //接收
{
strcpy(msg,"");
l=recv(client,msg,BYTEMAXLEN,0);
if (msg[l-3]=='^' && msg[l-2]=='&' && msg[l-1]=='*') //发送完的标志
{
msg[l-3]='\0';
fwrite((void*)msg,1,l-3,f); //写入数据
break;
}
fwrite((void*)msg,1,l,f);
}
fclose(f);
//////////////////////////////////////////////////////////////////